Skip to content

Commit f270f66

Browse files
committed
[C#] Add tests for #1092.
1 parent 1428382 commit f270f66

File tree

5 files changed

+117
-2
lines changed

5 files changed

+117
-2
lines changed

sbe-tool/src/test/java/uk/co/real_logic/sbe/generation/cpp/CppGeneratorTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,35 @@ void shouldUseConstexprWhenDefiningPrecedenceChecksLookupTables() throws Excepti
140140
assertThat(source, containsString("static constexpr const char *STATE_TRANSITIONS_LOOKUP[] ="));
141141
}
142142
}
143+
144+
@Test
145+
void shouldHandleLowerCaseEnumValueReference() throws Exception
146+
{
147+
try (InputStream in = Tests.getLocalResource("code-generation-schema.xml"))
148+
{
149+
final ParserOptions options = ParserOptions.builder().stopOnError(true).build();
150+
final MessageSchema schema = parse(in, options);
151+
final IrGenerator irg = new IrGenerator();
152+
final Ir ir = irg.generate(schema);
153+
final StringWriterOutputManager outputManager = new StringWriterOutputManager();
154+
outputManager.setPackageName(ir.applicableNamespace());
155+
156+
final CppGenerator generator = new CppGenerator(
157+
ir,
158+
false,
159+
PrecedenceChecks.newInstance(new PrecedenceChecks.Context().shouldGeneratePrecedenceChecks(true)),
160+
false,
161+
outputManager);
162+
generator.generate();
163+
164+
final java.util.Map<String, CharSequence> sources = outputManager.getSources();
165+
final String source = sources.get("code.generation.test.LowerCaseValueRef").toString();
166+
assertThat(source, containsString("""
167+
SBE_NODISCARD LowerCaseEnum::Value x() const
168+
{
169+
return LowerCaseEnum::Value::TwO;
170+
}
171+
"""));
172+
}
173+
}
143174
}

sbe-tool/src/test/java/uk/co/real_logic/sbe/generation/csharp/CSharpGeneratorTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,37 @@ void dtosShouldReferenceTypesInDifferentPackages() throws Exception
7272
assertThat(source, containsString("using Test.Message.Schema.Common;"));
7373
}
7474
}
75+
76+
@Test
77+
void shouldGenerateValidCode() throws Exception
78+
{
79+
try (InputStream in = Tests.getLocalResource("code-generation-schema.xml"))
80+
{
81+
final ParserOptions options = ParserOptions.builder().stopOnError(true).build();
82+
final MessageSchema schema = parse(in, options);
83+
final IrGenerator irg = new IrGenerator();
84+
final Ir ir = irg.generate(schema);
85+
final StringWriterOutputManager outputManager = new StringWriterOutputManager();
86+
outputManager.setPackageName(ir.applicableNamespace());
87+
88+
final CSharpGenerator generator = new CSharpGenerator(
89+
ir,
90+
PrecedenceChecks.newInstance(new PrecedenceChecks.Context()),
91+
true,
92+
outputManager);
93+
generator.generate();
94+
95+
final java.util.Map<String, CharSequence> sources = outputManager.getSources();
96+
final String source = sources.get("code.generation.test.LowerCaseValueRef").toString();
97+
assertThat(source, containsString("""
98+
public LowerCaseEnum X
99+
{
100+
get
101+
{
102+
return LowerCaseEnum.TwO;
103+
}
104+
}
105+
"""));
106+
}
107+
}
75108
}
Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626

2727
import java.io.InputStream;
2828

29-
import static org.junit.jupiter.api.Assertions.*;
29+
import static org.hamcrest.MatcherAssert.assertThat;
30+
import static org.hamcrest.Matchers.containsString;
31+
import static org.junit.jupiter.api.Assertions.assertEquals;
3032
import static uk.co.real_logic.sbe.xml.XmlSchemaParser.parse;
3133

32-
class GolangStructGeneratorTest
34+
class GolangGeneratorTest
3335
{
3436
@Test
3537
@SuppressWarnings("MethodLength")
@@ -485,4 +487,31 @@ void shouldUseUpperCaseTypeNamesWhenReferencingBitSet() throws Exception
485487
"}\n", messageSource);
486488
}
487489
}
490+
491+
@Test
492+
@SuppressWarnings("MethodLength")
493+
void shouldHandleLowerCaseEnumValueReference() throws Exception
494+
{
495+
try (InputStream in = Tests.getLocalResource("code-generation-schema.xml"))
496+
{
497+
final ParserOptions options = ParserOptions.builder().stopOnError(true).build();
498+
final MessageSchema schema = parse(in, options);
499+
final IrGenerator irg = new IrGenerator();
500+
final Ir ir = irg.generate(schema);
501+
final StringWriterOutputManager outputManager = new StringWriterOutputManager();
502+
outputManager.setPackageName(ir.applicableNamespace());
503+
504+
final GolangGenerator generator = new GolangGenerator(ir, outputManager);
505+
generator.generate();
506+
507+
final java.util.Map<String, CharSequence> sources = outputManager.getSources();
508+
final String source = sources.get("code.generation.test.LowerCaseValueRef").toString();
509+
assertThat(source, containsString("""
510+
func LowerCaseValueRefInit(l *LowerCaseValueRef) {
511+
\tl.X = LowerCaseEnum.TwO
512+
\treturn
513+
}
514+
"""));
515+
}
516+
}
488517
}

sbe-tool/src/test/java/uk/co/real_logic/sbe/generation/java/JavaGeneratorTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,21 @@ void shouldValidateNotImplementedReadOnlyBufferClass()
740740
() -> new JavaGenerator(ir, BUFFER_NAME, "java.nio.ByteBuffer", false, false, false, outputManager));
741741
}
742742

743+
@Test
744+
void shouldHandleLowerCaseEnumValueReference() throws Exception
745+
{
746+
generator().generate();
747+
748+
final java.util.Map<String, CharSequence> sources = outputManager.getSources();
749+
final String source = sources.get("code.generation.test.LowerCaseValueRefDecoder").toString();
750+
assertThat(source, containsString("""
751+
public LowerCaseEnum x()
752+
{
753+
return LowerCaseEnum.TwO;
754+
}
755+
"""));
756+
}
757+
743758
private Class<?> compileCarEncoder() throws Exception
744759
{
745760
final String className = "CarEncoder";

sbe-tool/src/test/resources/code-generation-schema.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@
7474
<choice name="sportsPack">1</choice>
7575
<choice name="cruiseControl">2</choice>
7676
</set>
77+
<enum name="lowerCaseEnum" encodingType="uint8">
78+
<validValue name="one">0</validValue>
79+
<validValue name="TwO">5</validValue>
80+
</enum>
7781
</types>
7882
<sbe:message name="Car" id="1" description="Description of a basic Car">
7983
<field name="serialNumber" id="1" type="uint64"/>
@@ -188,4 +192,7 @@
188192
<data name="package" id="101" type="varStringEncoding"/>
189193
<data name="var" id="102" type="varAsciiStringEncoding"/>
190194
</sbe:message>
195+
<sbe:message name="LowerCaseValueRef" id="3">
196+
<field name="x" id="1" type="lowerCaseEnum" presence="constant" valueRef="lowerCaseEnum.TwO"/>
197+
</sbe:message>
191198
</sbe:messageSchema>

0 commit comments

Comments
 (0)