@@ -75,6 +75,33 @@ void shouldUseConstexprWhenInitializingSemanticVersion() throws Exception
7575 }
7676 }
7777
78+ @ Test
79+ void shouldGenerateConstexprConstantCharAccessorOnlyForCpp14AndLater () throws Exception
80+ {
81+ try (InputStream in = Tests .getLocalResource ("code-generation-schema.xml" ))
82+ {
83+ final ParserOptions options = ParserOptions .builder ().stopOnError (true ).build ();
84+ final MessageSchema schema = parse (in , options );
85+ final IrGenerator irg = new IrGenerator ();
86+ final Ir ir = irg .generate (schema );
87+ final StringWriterOutputManager outputManager = new StringWriterOutputManager ();
88+ outputManager .setPackageName (ir .applicableNamespace ());
89+
90+ final CppGenerator generator = new CppGenerator (ir , false , outputManager );
91+ generator .generate ();
92+
93+ final String source = outputManager .getSource ("code.generation.test.Engine" ).toString ();
94+ assertThat (source , containsString ("#if __cplusplus >= 201402L" ));
95+ assertThat (source , containsString (
96+ "SBE_NODISCARD static SBE_CONSTEXPR char fuel(const std::uint64_t index) SBE_NOEXCEPT" ));
97+ assertThat (source , containsString ("const std::uint8_t fuelValues[] = { 80, 101, 116, 114, 111, 108, 0 };" ));
98+ assertThat (source , containsString ("#else" ));
99+ assertThat (source , containsString ("SBE_NODISCARD char fuel(const std::uint64_t index) const" ));
100+ assertThat (source , containsString (
101+ "static const std::uint8_t fuelValues[] = { 80, 101, 116, 114, 111, 108, 0 };" ));
102+ }
103+ }
104+
78105 @ Test
79106 void dtosShouldReferenceTypesInDifferentPackages () throws Exception
80107 {
0 commit comments