Skip to content

Commit f9835e1

Browse files
test(audience-sdk): centralise paired JSON round-trip fixtures
JsonTests and JsonReaderTests both used the same literals to verify round-trip behaviour: each input dictionary in JsonTests had a matching encoded form in JsonReaderTests, and vice versa. The single string pair (key / hello), the all-escapes string (val / "say \"hi\"\nback\\slash\ttab"), and the nested object (outer / inner / value) appeared duplicated in both files. Adds JsonRoundTripFixtures with the raw key, raw value, and exact-encoded form for each of the three pairs. Migrates six references across the two files. Renaming any fixture (e.g. swapping "hello" for "world") now needs one edit and both tests stay coherent. Per the user's "everything random goes in a constant" stance. Follow-up to SDK-272 (centralisation of duplicated literals).
1 parent a6aaeae commit f9835e1

4 files changed

Lines changed: 49 additions & 14 deletions

File tree

src/Packages/Audience/Tests/Runtime/Utility/JsonReaderTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ public void EmptyObject()
1616
[Test]
1717
public void StringValue()
1818
{
19-
var result = JsonReader.DeserializeObject("{\"key\":\"hello\"}");
20-
Assert.AreEqual("hello", result["key"]);
19+
var result = JsonReader.DeserializeObject(JsonRoundTripFixtures.KeyHelloEncoded);
20+
Assert.AreEqual(JsonRoundTripFixtures.HelloValue, result[JsonRoundTripFixtures.KeyName]);
2121
}
2222

2323
[Test]
2424
public void StringWithEscapes()
2525
{
26-
var result = JsonReader.DeserializeObject("{\"val\":\"say \\\"hi\\\"\\nback\\\\slash\\ttab\"}");
27-
Assert.AreEqual("say \"hi\"\nback\\slash\ttab", result["val"]);
26+
var result = JsonReader.DeserializeObject(JsonRoundTripFixtures.ValEscapeRichEncoded);
27+
Assert.AreEqual(JsonRoundTripFixtures.EscapeRichString, result[JsonRoundTripFixtures.ValName]);
2828
}
2929

3030
[Test]
@@ -47,9 +47,9 @@ public void BoolAndNull()
4747
[Test]
4848
public void NestedObject()
4949
{
50-
var result = JsonReader.DeserializeObject("{\"outer\":{\"inner\":\"value\"}}");
51-
var inner = (Dictionary<string, object>)result["outer"];
52-
Assert.AreEqual("value", inner["inner"]);
50+
var result = JsonReader.DeserializeObject(JsonRoundTripFixtures.OuterInnerEncoded);
51+
var inner = (Dictionary<string, object>)result[JsonRoundTripFixtures.OuterKey];
52+
Assert.AreEqual(JsonRoundTripFixtures.InnerValue, inner[JsonRoundTripFixtures.InnerKey]);
5353
}
5454

5555
[Test]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
namespace Immutable.Audience.Tests
2+
{
3+
// Paired serialise/deserialise fixtures shared between JsonTests and JsonReaderTests.
4+
// Each pair pins the round-trip guarantee.
5+
internal static class JsonRoundTripFixtures
6+
{
7+
// Single string key / value pair.
8+
internal const string KeyName = "key";
9+
internal const string HelloValue = "hello";
10+
internal const string KeyHelloEncoded = "{\"key\":\"hello\"}";
11+
12+
// String containing every escape sequence the codec handles
13+
// (escaped quote, newline, backslash, tab).
14+
internal const string ValName = "val";
15+
internal const string EscapeRichString = "say \"hi\"\nback\\slash\ttab";
16+
internal const string ValEscapeRichEncoded = "{\"val\":\"say \\\"hi\\\"\\nback\\\\slash\\ttab\"}";
17+
18+
// Nested object.
19+
internal const string OuterKey = "outer";
20+
internal const string InnerKey = "inner";
21+
internal const string InnerValue = "value";
22+
internal const string OuterInnerEncoded = "{\"outer\":{\"inner\":\"value\"}}";
23+
}
24+
}

src/Packages/Audience/Tests/Runtime/Utility/JsonRoundTripFixtures.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Packages/Audience/Tests/Runtime/Utility/JsonTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,24 @@ public void Serialize_EmptyDict_ReturnsEmptyObject()
1818
[Test]
1919
public void Serialize_StringValue_ReturnsQuotedString()
2020
{
21-
var data = new Dictionary<string, object> { { "key", "hello" } };
21+
var data = new Dictionary<string, object> { { JsonRoundTripFixtures.KeyName, JsonRoundTripFixtures.HelloValue } };
2222

2323
var result = Json.Serialize(data);
2424

25-
Assert.AreEqual("{\"key\":\"hello\"}", result);
25+
Assert.AreEqual(JsonRoundTripFixtures.KeyHelloEncoded, result);
2626
}
2727

2828
[Test]
2929
public void Serialize_StringWithSpecialChars_EscapesCorrectly()
3030
{
3131
var data = new Dictionary<string, object>
3232
{
33-
{ "val", "say \"hi\"\nback\\slash\ttab" }
33+
{ JsonRoundTripFixtures.ValName, JsonRoundTripFixtures.EscapeRichString }
3434
};
3535

3636
var result = Json.Serialize(data);
3737

38-
Assert.AreEqual("{\"val\":\"say \\\"hi\\\"\\nback\\\\slash\\ttab\"}", result);
38+
Assert.AreEqual(JsonRoundTripFixtures.ValEscapeRichEncoded, result);
3939
}
4040

4141
[Test]
@@ -84,14 +84,14 @@ public void Serialize_NestedDict_ReturnsNestedObject()
8484
var data = new Dictionary<string, object>
8585
{
8686
{
87-
"outer", new Dictionary<string, object>
87+
JsonRoundTripFixtures.OuterKey, new Dictionary<string, object>
8888
{
89-
{ "inner", "value" }
89+
{ JsonRoundTripFixtures.InnerKey, JsonRoundTripFixtures.InnerValue }
9090
}
9191
}
9292
};
9393

94-
Assert.AreEqual("{\"outer\":{\"inner\":\"value\"}}", Json.Serialize(data));
94+
Assert.AreEqual(JsonRoundTripFixtures.OuterInnerEncoded, Json.Serialize(data));
9595
}
9696

9797
[Test]

0 commit comments

Comments
 (0)