Skip to content

Commit

Permalink
Merge pull request #90 from hadashiA/ku/emit-flow-mapping
Browse files Browse the repository at this point in the history
Support emit to flow-mapping
  • Loading branch information
hadashiA authored Jan 30, 2024
2 parents 601d7e8 + 697a502 commit 2877660
Show file tree
Hide file tree
Showing 4 changed files with 714 additions and 134 deletions.
171 changes: 165 additions & 6 deletions VYaml.Tests/Emitter/Utf8YamlEmitterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public void WriteString_LiteralScalar()
" Mark McGwire's\n" +
" year was crippled\n" +
" by a knee injury.\n"
));
));
}

[Test]
Expand Down Expand Up @@ -292,6 +292,15 @@ public string WriteString_AutoMultiLines(string value)
return ToString(in emitter);
}

[Test]
public void WritePrimitive_WithTag()
{
var emitter = CreateEmitter();
emitter.Tag("!foo");
emitter.WriteString("hoge");
Assert.That(ToString(in emitter), Is.EqualTo("!foo hoge"));
}

[Test]
public void BlockSequence()
{
Expand All @@ -306,7 +315,7 @@ public void BlockSequence()
"- 100\n" +
"- 200\n" +
"- 300\n"
));
));
}

[Test]
Expand Down Expand Up @@ -596,7 +605,7 @@ public void BlockMapping()
Assert.That(ToString(in emitter), Is.EqualTo(
"1: 100\n" +
"2: 200\n"
));
));
}

[Test]
Expand Down Expand Up @@ -912,7 +921,7 @@ public void BlockMapping_WithTag()
Assert.That(ToString(in emitter), Is.EqualTo(
"!impl1\n" +
"key1: value1\n"
));
));
}

[Test]
Expand Down Expand Up @@ -1014,7 +1023,25 @@ public void FlowSequence()

Assert.That(ToString(in emitter), Is.EqualTo(
"[100, 200, 300]"
));
));
}

[Test]
public void FlowSequence_WithTag()
{
var emitter = CreateEmitter();
emitter.Tag("!foo");
emitter.BeginSequence(SequenceStyle.Flow);
{
emitter.WriteInt32(100);
emitter.WriteInt32(200);
emitter.WriteInt32(300);
}
emitter.EndSequence();

Assert.That(ToString(in emitter), Is.EqualTo(
"!foo [100, 200, 300]"
));
}

[Test]
Expand All @@ -1039,6 +1066,138 @@ public void FlowSequence_Nested1()
));
}

[Test]
public void FlowSequence_Nested2()
{
var emitter = CreateEmitter();
emitter.BeginMapping(MappingStyle.Block);
{
emitter.WriteString("a");
emitter.BeginSequence(SequenceStyle.Flow);
{
emitter.WriteInt32(200);
}
emitter.EndSequence();

emitter.WriteString("b");
emitter.BeginMapping(MappingStyle.Flow);
{
emitter.WriteString("c");
emitter.BeginSequence(SequenceStyle.Flow);
{
emitter.WriteInt32(300);
}
emitter.EndSequence();
}
emitter.EndMapping();
}
emitter.EndMapping();

Assert.That(ToString(in emitter), Is.EqualTo(
"a: [200]\n" +
"b: { c: [300] }\n"
));
}

[Test]
public void FlowMapping()
{
var emitter = CreateEmitter();
emitter.BeginMapping(MappingStyle.Flow);
{
emitter.WriteString("a");
emitter.WriteInt32(100);
emitter.WriteString("b");
emitter.WriteInt32(300);
}
emitter.EndMapping();

Assert.That(ToString(in emitter), Is.EqualTo(
"{ a: 100, b: 300 }"
));
}

[Test]
public void FlowMapping_Empty()
{
var emitter = CreateEmitter();
emitter.BeginMapping(MappingStyle.Flow);
emitter.EndMapping();

Assert.That(ToString(in emitter), Is.EqualTo("{}"));
}

[Test]
public void FlowMapping_Nested1()
{
var emitter = CreateEmitter();
emitter.BeginMapping(MappingStyle.Flow);
{
emitter.WriteString("a");
emitter.BeginMapping(MappingStyle.Flow);
{
emitter.WriteString("b");
emitter.WriteInt32(200);
}
emitter.EndMapping();

emitter.WriteString("c");
emitter.WriteInt32(300);
}
emitter.EndMapping();

Assert.That(ToString(in emitter), Is.EqualTo(
"{ a: { b: 200 }, c: 300 }"
));
}

[Test]
public void FlowMapping_Nested2()
{
var emitter = CreateEmitter();
emitter.BeginSequence(SequenceStyle.Block);
{
emitter.BeginMapping(MappingStyle.Flow);
emitter.WriteString("a");
emitter.WriteInt32(200);
emitter.EndMapping();

emitter.BeginSequence(SequenceStyle.Flow);
{
emitter.BeginMapping(MappingStyle.Flow);
emitter.WriteString("b");
emitter.WriteInt32(300);
emitter.EndMapping();
}
emitter.EndSequence();
}
emitter.EndSequence();

Assert.That(ToString(in emitter), Is.EqualTo(
"- { a: 200 }\n" +
"- [{ b: 300 }]\n"
));
}

[Test]
public void FlowMapping_WithTag()
{
var emitter = CreateEmitter();
emitter.Tag("!foo");
emitter.BeginMapping(MappingStyle.Flow);
{
emitter.WriteString("a");
emitter.WriteInt32(100);
emitter.WriteString("b");
emitter.WriteInt32(300);
}
emitter.EndMapping();

Assert.That(ToString(in emitter), Is.EqualTo(
"!foo { a: 100, b: 300 }"
));
}

[Test]
public void ComplexStructure()
{
Expand Down Expand Up @@ -1143,4 +1302,4 @@ static string ToString(in Utf8YamlEmitter emitter)
return StringEncoding.Utf8.GetString(writer.WrittenSpan);
}
}
}
}
Loading

0 comments on commit 2877660

Please sign in to comment.