@Test public void fullGenerateBasicTypes() { final String generatedRust = fullGenerateForResource(outputManager, BASIC_TYPES_SCHEMA); assertContainsSharedImports(generatedRust); assertContainsNumericEnum(generatedRust); }
@Test public void generateBasicEnum() throws IOException { RustGenerator.generateSharedImports(generateIrForResource(BASIC_TYPES_SCHEMA), outputManager); assertContainsSharedImports(outputManager.toString()); }
@Test public void generateSharedImports() throws IOException { RustGenerator.generateSharedImports(generateIrForResource(BROAD_USE_CASES_SCHEMA), outputManager); assertContainsSharedImports(outputManager.toString()); }
@Test public void fullGenerateBroadUseCase() throws IOException, InterruptedException { final String generatedRust = fullGenerateForResource(outputManager, "example-schema"); assertContainsSharedImports(generatedRust); assertContains(generatedRust, "pub fn car_fields(mut self) -> CodecResult<(&'d CarFields, CarFuelFiguresHeaderDecoder<'d>)> {\n" + " let v = self.scratch.read_type::<CarFields>(49)?;\n" + " Ok((v, CarFuelFiguresHeaderDecoder::wrap(self.scratch)))\n" + " }"); final String expectedBooleanTypeDeclaration = "#[derive(Clone,Copy,Debug,PartialEq,Eq,PartialOrd,Ord,Hash)]\n" + "#[repr(u8)]\n" + "pub enum BooleanType {\n" + " F = 0u8,\n" + " T = 1u8,\n" + "}\n"; assertTrue(generatedRust.contains(expectedBooleanTypeDeclaration)); final String expectedCharTypeDeclaration = "#[derive(Clone,Copy,Debug,PartialEq,Eq,PartialOrd,Ord,Hash)]\n" + "#[repr(i8)]\n" + "pub enum Model {\n" + " A = 65i8,\n" + " B = 66i8,\n" + " C = 67i8,\n" + "}\n"; assertTrue(generatedRust.contains(expectedCharTypeDeclaration)); assertRustBuildable(generatedRust, Optional.of("example-schema")); }
@Test public void constantEnumFields() throws IOException, InterruptedException { final String rust = fullGenerateForResource(outputManager, "constant-enum-fields"); assertContainsSharedImports(rust); final String expectedCharTypeDeclaration = "#[derive(Clone,Copy,Debug,PartialEq,Eq,PartialOrd,Ord,Hash)]\n" + "#[repr(i8)]\n" + "pub enum Model {\n" + " A = 65i8,\n" + " B = 66i8,\n" + " C = 67i8,\n" + "}\n"; assertContains(rust, expectedCharTypeDeclaration); assertContains(rust, "pub struct ConstantEnumsFields {\n}"); assertContains(rust, "impl ConstantEnumsFields {"); assertContains(rust, " pub fn c() -> Model {\n" + " Model::C\n }"); assertContains(rust, "impl ConstantEnumsFMember {"); assertContains(rust, " pub fn k() -> Model {\n" + " Model::C\n }"); assertContains(rust, "pub fn constant_enums_fields(mut self) -> " + "CodecResult<(&'d ConstantEnumsFields, ConstantEnumsFHeaderDecoder<'d>)> {\n" + " let v = self.scratch.read_type::<ConstantEnumsFields>(0)?;\n" + " Ok((v, ConstantEnumsFHeaderDecoder::wrap(self.scratch)))\n" + " }"); assertRustBuildable(rust, Optional.of("constant-enum-fields")); }
assertContainsSharedImports(rust); final String expectedCharTypeDeclaration = "#[derive(Clone,Copy,Debug,PartialEq,Eq,PartialOrd,Ord,Hash)]\n" +