Skip to content

Commit e9a4fae

Browse files
committed
Add tests from vrf
1 parent 994fef5 commit e9a4fae

File tree

4 files changed

+174
-0
lines changed

4 files changed

+174
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
2+
{
3+
backslash_quote = "\\\""
4+
four_backslashes = "\\\\\\\\"
5+
alternating = "\\\"\\\""
6+
complex_path = "C:\\Program Files\\\"Game\"\\data\\"
7+
unknown_escape = "\x"
8+
unknown_escape_mid = "he\xllo"
9+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
2+
{
3+
escaped_quote = "\""
4+
escaped_quote_then_text = "\"hello"
5+
text_then_escaped_quote = "hello\""
6+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!-- kv3 encoding:text:version{e21c7f3c-8a33-41c5-9977-a76d3a32aa0d} format:generic:version{7412167c-06e9-4698-aff2-e63eb59037e7} -->
2+
{
3+
carriage_return = "hello\rworld"
4+
vertical_tab = "hello\vworld"
5+
backspace = "hello\bworld"
6+
form_feed = "hello\fworld"
7+
alert = "hello\aworld"
8+
question_mark = "hello\?world"
9+
single_quote = "hello\'world"
10+
}
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
namespace ValveKeyValue.Test.TextKV3
2+
{
3+
class EscapeSequenceTestCase
4+
{
5+
[Test]
6+
public void RareEscapeSequences_CarriageReturn()
7+
{
8+
using var stream = TestDataHelper.OpenResource("TextKV3.rare_escape_sequences.kv3");
9+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
10+
11+
Assert.That((string)data["carriage_return"], Is.EqualTo("hellorworld"));
12+
}
13+
14+
[Test]
15+
public void RareEscapeSequences_VerticalTab()
16+
{
17+
using var stream = TestDataHelper.OpenResource("TextKV3.rare_escape_sequences.kv3");
18+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
19+
20+
Assert.That((string)data["vertical_tab"], Is.EqualTo("hellovworld"));
21+
}
22+
23+
[Test]
24+
public void RareEscapeSequences_Backspace()
25+
{
26+
using var stream = TestDataHelper.OpenResource("TextKV3.rare_escape_sequences.kv3");
27+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
28+
29+
Assert.That((string)data["backspace"], Is.EqualTo("hellobworld"));
30+
}
31+
32+
[Test]
33+
public void RareEscapeSequences_FormFeed()
34+
{
35+
using var stream = TestDataHelper.OpenResource("TextKV3.rare_escape_sequences.kv3");
36+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
37+
38+
Assert.That((string)data["form_feed"], Is.EqualTo("hellofworld"));
39+
}
40+
41+
[Test]
42+
public void RareEscapeSequences_Alert()
43+
{
44+
using var stream = TestDataHelper.OpenResource("TextKV3.rare_escape_sequences.kv3");
45+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
46+
47+
Assert.That((string)data["alert"], Is.EqualTo("helloaworld"));
48+
}
49+
50+
[Test]
51+
public void RareEscapeSequences_QuestionMark()
52+
{
53+
using var stream = TestDataHelper.OpenResource("TextKV3.rare_escape_sequences.kv3");
54+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
55+
56+
Assert.That((string)data["question_mark"], Is.EqualTo("hello?world"));
57+
}
58+
59+
[Test]
60+
public void RareEscapeSequences_SingleQuote()
61+
{
62+
using var stream = TestDataHelper.OpenResource("TextKV3.rare_escape_sequences.kv3");
63+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
64+
65+
Assert.That((string)data["single_quote"], Is.EqualTo("hello'world"));
66+
}
67+
68+
[Test]
69+
public void ChainedBackslashPatterns_BackslashThenQuote()
70+
{
71+
using var stream = TestDataHelper.OpenResource("TextKV3.chained_backslash_patterns.kv3");
72+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
73+
74+
Assert.That((string)data["backslash_quote"], Is.EqualTo("\\\""));
75+
}
76+
77+
[Test]
78+
public void ChainedBackslashPatterns_FourBackslashes()
79+
{
80+
using var stream = TestDataHelper.OpenResource("TextKV3.chained_backslash_patterns.kv3");
81+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
82+
83+
Assert.That((string)data["four_backslashes"], Is.EqualTo("\\\\\\\\"));
84+
}
85+
86+
[Test]
87+
public void ChainedBackslashPatterns_Alternating()
88+
{
89+
using var stream = TestDataHelper.OpenResource("TextKV3.chained_backslash_patterns.kv3");
90+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
91+
92+
Assert.That((string)data["alternating"], Is.EqualTo("\\\"\\\""));
93+
}
94+
95+
[Test]
96+
public void ChainedBackslashPatterns_ComplexPath()
97+
{
98+
using var stream = TestDataHelper.OpenResource("TextKV3.chained_backslash_patterns.kv3");
99+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
100+
101+
Assert.That((string)data["complex_path"], Is.EqualTo("C:\\Program Files\\\"Game\"\\data\\"));
102+
}
103+
104+
[Test]
105+
public void ChainedBackslashPatterns_UnknownEscape()
106+
{
107+
using var stream = TestDataHelper.OpenResource("TextKV3.chained_backslash_patterns.kv3");
108+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
109+
110+
Assert.That((string)data["unknown_escape"], Is.EqualTo("x"));
111+
}
112+
113+
[Test]
114+
public void ChainedBackslashPatterns_UnknownEscapeMid()
115+
{
116+
using var stream = TestDataHelper.OpenResource("TextKV3.chained_backslash_patterns.kv3");
117+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
118+
119+
Assert.That((string)data["unknown_escape_mid"], Is.EqualTo("hexllo"));
120+
}
121+
122+
[Test]
123+
public void EscapedQuoteAtStart_SingleEscapedQuote()
124+
{
125+
using var stream = TestDataHelper.OpenResource("TextKV3.escaped_quote_at_start.kv3");
126+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
127+
128+
Assert.That((string)data["escaped_quote"], Is.EqualTo("\""));
129+
}
130+
131+
[Test]
132+
public void EscapedQuoteAtStart_EscapedQuoteThenText()
133+
{
134+
using var stream = TestDataHelper.OpenResource("TextKV3.escaped_quote_at_start.kv3");
135+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
136+
137+
Assert.That((string)data["escaped_quote_then_text"], Is.EqualTo("\"hello"));
138+
}
139+
140+
[Test]
141+
public void EscapedQuoteAtStart_TextThenEscapedQuote()
142+
{
143+
using var stream = TestDataHelper.OpenResource("TextKV3.escaped_quote_at_start.kv3");
144+
var data = KVSerializer.Create(KVSerializationFormat.KeyValues3Text).Deserialize(stream);
145+
146+
Assert.That((string)data["text_then_escaped_quote"], Is.EqualTo("hello\""));
147+
}
148+
}
149+
}

0 commit comments

Comments
 (0)