Skip to content

Commit a42998f

Browse files
committed
vrf compat
1 parent be24cf3 commit a42998f

11 files changed

Lines changed: 314 additions & 18 deletions

File tree

ValveKeyValue/ValveKeyValue.Test/ApiSurfaceTestCase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public void ApiSurfaceIsWellKnown()
1313
var expected = TestDataHelper.ReadTextResource("apisurface.txt");
1414
var actual = GenerateApiSurface(typeof(KVObject).GetTypeInfo().Assembly);
1515

16+
File.WriteAllText(Path.Combine(TestContext.CurrentContext.TestDirectory, "apisurface.txt"), actual);
1617
Assert.That(actual, Is.EqualTo(expected), "This may indicate a breaking change.");
1718
}
1819

ValveKeyValue/ValveKeyValue.Test/KVBasicObjectIndexerTestCase.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@ namespace ValveKeyValue.Test
33
class KVBasicObjectIndexerTestCase
44
{
55
[Test]
6-
public void IndexerOnValueNodeThrowsException()
6+
public void IndexerOnValueNodeReturnsNull()
77
{
8-
Assert.That(
9-
() => data["baz"],
10-
Throws.Exception.InstanceOf<InvalidOperationException>()
11-
.With.Message.EqualTo("This operation on a KVObject can only be used when the value has children."));
8+
Assert.That(data["baz"], Is.Null);
129
}
1310

1411
KVObject data;

ValveKeyValue/ValveKeyValue.Test/Test Data/TextKV3/array_from_kv1.kv3

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
arrayMixedTypes = {
1717
"0" = "a"
1818
"1" = 1
19-
"2" = "True"
20-
"3" = "False"
19+
"2" = 1
20+
"3" = 0
2121
"4" = ""
2222
"5" = {
2323
foo = "bar"

ValveKeyValue/ValveKeyValue.Test/Test Data/TextKV3/array_kv1.vdf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
{
2121
"0" "a"
2222
"1" "1"
23-
"2" "True"
24-
"3" "False"
23+
"2" "1"
24+
"3" "0"
2525
"4" ""
2626
"5"
2727
{

ValveKeyValue/ValveKeyValue.Test/Test Data/apisurface.txt

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,18 +112,63 @@ public class ValveKeyValue.KVBinaryBlob
112112
public ulong ToUInt64(IFormatProvider provider);
113113
}
114114

115+
public class ValveKeyValue.KVCollectionValue
116+
{
117+
public .ctor();
118+
public void Add(ValveKeyValue.KVObject value);
119+
public void AddRange(System.Collections.Generic.IEnumerable`1[[ValveKeyValue.KVObject]] values);
120+
public bool Equals(object obj);
121+
protected void Finalize();
122+
public ValveKeyValue.KVObject Get(string name);
123+
public int get_Count();
124+
public ValveKeyValue.KVFlag get_Flag();
125+
public ValveKeyValue.KVValue get_Item(string key);
126+
public ValveKeyValue.KVValueType get_ValueType();
127+
public System.Collections.Generic.IEnumerator`1[[ValveKeyValue.KVObject]] GetEnumerator();
128+
public int GetHashCode();
129+
public Type GetType();
130+
public TypeCode GetTypeCode();
131+
protected object MemberwiseClone();
132+
public void Set(string name, ValveKeyValue.KVValue value);
133+
public void set_Flag(ValveKeyValue.KVFlag value);
134+
public bool ToBoolean(IFormatProvider provider);
135+
public byte ToByte(IFormatProvider provider);
136+
public char ToChar(IFormatProvider provider);
137+
public DateTime ToDateTime(IFormatProvider provider);
138+
public decimal ToDecimal(IFormatProvider provider);
139+
public double ToDouble(IFormatProvider provider);
140+
public short ToInt16(IFormatProvider provider);
141+
public int ToInt32(IFormatProvider provider);
142+
public long ToInt64(IFormatProvider provider);
143+
public sbyte ToSByte(IFormatProvider provider);
144+
public float ToSingle(IFormatProvider provider);
145+
public string ToString();
146+
public string ToString(IFormatProvider provider);
147+
public object ToType(Type conversionType, IFormatProvider provider);
148+
public ushort ToUInt16(IFormatProvider provider);
149+
public uint ToUInt32(IFormatProvider provider);
150+
public ulong ToUInt64(IFormatProvider provider);
151+
}
152+
115153
public class ValveKeyValue.KVDocument
116154
{
117155
public .ctor(ValveKeyValue.KVHeader header, string name, ValveKeyValue.KVValue value);
118156
public void Add(ValveKeyValue.KVObject value);
157+
public void Add(ValveKeyValue.KVValue value);
158+
public void AddProperty(string name, ValveKeyValue.KVValue value);
159+
public bool ContainsKey(string name);
119160
public bool Equals(object obj);
120161
protected void Finalize();
121162
public System.Collections.Generic.IEnumerable`1[[ValveKeyValue.KVObject]] get_Children();
122163
public System.Collections.Generic.IEnumerable`1[[ValveKeyValue.KVValue]] get_ChildrenValues();
164+
public int get_Count();
123165
public ValveKeyValue.KVHeader get_Header();
166+
public bool get_IsArray();
167+
public ValveKeyValue.KVValue get_Item(int index);
124168
public ValveKeyValue.KVValue get_Item(string key);
125169
public string get_Name();
126170
public ValveKeyValue.KVValue get_Value();
171+
public ValveKeyValue.KVObject GetChild(string name);
127172
public System.Collections.Generic.IEnumerator`1[[ValveKeyValue.KVObject]] GetEnumerator();
128173
public int GetHashCode();
129174
public Type GetType();
@@ -185,19 +230,59 @@ public sealed class ValveKeyValue.KVIgnoreAttribute
185230
public string ToString();
186231
}
187232

233+
public class ValveKeyValue.KVNullValue
234+
{
235+
public .ctor();
236+
public bool Equals(object obj);
237+
protected void Finalize();
238+
public ValveKeyValue.KVFlag get_Flag();
239+
public ValveKeyValue.KVValue get_Item(string key);
240+
public ValveKeyValue.KVValueType get_ValueType();
241+
public int GetHashCode();
242+
public Type GetType();
243+
public TypeCode GetTypeCode();
244+
protected object MemberwiseClone();
245+
public void set_Flag(ValveKeyValue.KVFlag value);
246+
public bool ToBoolean(IFormatProvider provider);
247+
public byte ToByte(IFormatProvider provider);
248+
public char ToChar(IFormatProvider provider);
249+
public DateTime ToDateTime(IFormatProvider provider);
250+
public decimal ToDecimal(IFormatProvider provider);
251+
public double ToDouble(IFormatProvider provider);
252+
public short ToInt16(IFormatProvider provider);
253+
public int ToInt32(IFormatProvider provider);
254+
public long ToInt64(IFormatProvider provider);
255+
public sbyte ToSByte(IFormatProvider provider);
256+
public float ToSingle(IFormatProvider provider);
257+
public string ToString();
258+
public string ToString(IFormatProvider provider);
259+
public object ToType(Type conversionType, IFormatProvider provider);
260+
public ushort ToUInt16(IFormatProvider provider);
261+
public uint ToUInt32(IFormatProvider provider);
262+
public ulong ToUInt64(IFormatProvider provider);
263+
}
264+
188265
public class ValveKeyValue.KVObject
189266
{
267+
public .ctor(string name);
190268
public .ctor(string name, System.Collections.Generic.IEnumerable`1[[ValveKeyValue.KVObject]] items);
191269
public .ctor(string name, System.Collections.Generic.IEnumerable`1[[ValveKeyValue.KVValue]] items);
192270
public .ctor(string name, ValveKeyValue.KVValue value);
193271
public void Add(ValveKeyValue.KVObject value);
272+
public void Add(ValveKeyValue.KVValue value);
273+
public void AddProperty(string name, ValveKeyValue.KVValue value);
274+
public bool ContainsKey(string name);
194275
public bool Equals(object obj);
195276
protected void Finalize();
196277
public System.Collections.Generic.IEnumerable`1[[ValveKeyValue.KVObject]] get_Children();
197278
public System.Collections.Generic.IEnumerable`1[[ValveKeyValue.KVValue]] get_ChildrenValues();
279+
public int get_Count();
280+
public bool get_IsArray();
281+
public ValveKeyValue.KVValue get_Item(int index);
198282
public ValveKeyValue.KVValue get_Item(string key);
199283
public string get_Name();
200284
public ValveKeyValue.KVValue get_Value();
285+
public ValveKeyValue.KVObject GetChild(string name);
201286
public System.Collections.Generic.IEnumerator`1[[ValveKeyValue.KVObject]] GetEnumerator();
202287
public int GetHashCode();
203288
public Type GetType();
@@ -306,12 +391,16 @@ public class ValveKeyValue.KVValue
306391
public static ushort op_Explicit(ValveKeyValue.KVValue value);
307392
public static IntPtr op_Explicit(ValveKeyValue.KVValue value);
308393
public static ValveKeyValue.KVValue op_Implicit(bool value);
394+
public static ValveKeyValue.KVValue op_Implicit(double value);
309395
public static ValveKeyValue.KVValue op_Implicit(float value);
310396
public static ValveKeyValue.KVValue op_Implicit(int value);
311397
public static ValveKeyValue.KVValue op_Implicit(IntPtr value);
312398
public static ValveKeyValue.KVValue op_Implicit(long value);
399+
public static ValveKeyValue.KVValue op_Implicit(short value);
313400
public static ValveKeyValue.KVValue op_Implicit(string value);
401+
public static ValveKeyValue.KVValue op_Implicit(uint value);
314402
public static ValveKeyValue.KVValue op_Implicit(ulong value);
403+
public static ValveKeyValue.KVValue op_Implicit(ushort value);
315404
public void set_Flag(ValveKeyValue.KVFlag value);
316405
public bool ToBoolean(IFormatProvider provider);
317406
public byte ToByte(IFormatProvider provider);

ValveKeyValue/ValveKeyValue/KVCollectionValue.cs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,54 @@
33

44
namespace ValveKeyValue
55
{
6-
class KVCollectionValue : KVValue, IEnumerable<KVObject>
6+
/// <summary>
7+
/// Represents a collection of named KeyValue children.
8+
/// </summary>
9+
public class KVCollectionValue : KVValue, IEnumerable<KVObject>
710
{
11+
/// <inheritdoc cref="KVCollectionValue"/>
812
public KVCollectionValue()
913
{
1014
children = new List<KVObject>();
1115
}
1216

1317
readonly List<KVObject> children;
1418

19+
/// <inheritdoc/>
1520
public override KVValueType ValueType => KVValueType.Collection;
1621

22+
/// <inheritdoc cref="KVArrayValue.Count"/>
23+
public int Count => children.Count;
24+
25+
/// <inheritdoc/>
1726
public override KVValue this[string key] => Get(key)?.Value;
1827

28+
/// <inheritdoc cref="KVObject.Add(KVObject)"/>
1929
public void Add(KVObject value)
2030
{
2131
ArgumentNullException.ThrowIfNull(value);
2232
children.Add(value);
2333
}
2434

35+
/// <inheritdoc cref="KVArrayValue.AddRange"/>
2536
public void AddRange(IEnumerable<KVObject> values)
2637
{
2738
ArgumentNullException.ThrowIfNull(values);
2839
children.AddRange(values);
2940
}
3041

42+
/// <summary>
43+
/// Gets a child by name.
44+
/// </summary>
3145
public KVObject Get(string name)
3246
{
3347
ArgumentNullException.ThrowIfNull(name);
3448
return children.FirstOrDefault(c => c.Name == name);
3549
}
3650

51+
/// <summary>
52+
/// Sets or replaces a child by name.
53+
/// </summary>
3754
public void Set(string name, KVValue value)
3855
{
3956
ArgumentNullException.ThrowIfNull(name);
@@ -45,90 +62,108 @@ public void Set(string name, KVValue value)
4562

4663
#region IEnumerable<KVObject>
4764

65+
/// <inheritdoc/>
4866
public IEnumerator<KVObject> GetEnumerator() => children.GetEnumerator();
4967

5068
#endregion
5169

5270
#region IConvertible
5371

72+
/// <inheritdoc/>
5473
public override TypeCode GetTypeCode()
5574
{
5675
throw new NotSupportedException();
5776
}
5877

78+
/// <inheritdoc/>
5979
public override bool ToBoolean(IFormatProvider provider)
6080
{
6181
throw new NotSupportedException();
6282
}
6383

84+
/// <inheritdoc/>
6485
public override byte ToByte(IFormatProvider provider)
6586
{
6687
throw new NotSupportedException();
6788
}
6889

90+
/// <inheritdoc/>
6991
public override char ToChar(IFormatProvider provider)
7092
{
7193
throw new NotSupportedException();
7294
}
7395

96+
/// <inheritdoc/>
7497
public override DateTime ToDateTime(IFormatProvider provider)
7598
{
7699
throw new NotSupportedException();
77100
}
78101

102+
/// <inheritdoc/>
79103
public override decimal ToDecimal(IFormatProvider provider)
80104
{
81105
throw new NotSupportedException();
82106
}
83107

108+
/// <inheritdoc/>
84109
public override double ToDouble(IFormatProvider provider)
85110
{
86111
throw new NotSupportedException();
87112
}
88113

114+
/// <inheritdoc/>
89115
public override short ToInt16(IFormatProvider provider)
90116
{
91117
throw new NotSupportedException();
92118
}
93119

120+
/// <inheritdoc/>
94121
public override int ToInt32(IFormatProvider provider)
95122
{
96123
throw new NotSupportedException();
97124
}
98125

126+
/// <inheritdoc/>
99127
public override long ToInt64(IFormatProvider provider)
100128
{
101129
throw new NotSupportedException();
102130
}
103131

132+
/// <inheritdoc/>
104133
public override sbyte ToSByte(IFormatProvider provider)
105134
{
106135
throw new NotSupportedException();
107136
}
108137

138+
/// <inheritdoc/>
109139
public override float ToSingle(IFormatProvider provider)
110140
{
111141
throw new NotSupportedException();
112142
}
113143

144+
/// <inheritdoc/>
114145
public override string ToString(IFormatProvider provider)
115146
=> ToString();
116147

148+
/// <inheritdoc/>
117149
public override object ToType(Type conversionType, IFormatProvider provider)
118150
{
119151
throw new NotSupportedException();
120152
}
121153

154+
/// <inheritdoc/>
122155
public override ushort ToUInt16(IFormatProvider provider)
123156
{
124157
throw new NotSupportedException();
125158
}
126159

160+
/// <inheritdoc/>
127161
public override uint ToUInt32(IFormatProvider provider)
128162
{
129163
throw new NotSupportedException();
130164
}
131165

166+
/// <inheritdoc/>
132167
public override ulong ToUInt64(IFormatProvider provider)
133168
{
134169
throw new NotSupportedException();
@@ -138,10 +173,12 @@ public override ulong ToUInt64(IFormatProvider provider)
138173

139174
#region IEnumerable
140175

176+
/// <inheritdoc/>
141177
IEnumerator IEnumerable.GetEnumerator() => children.GetEnumerator();
142178

143179
#endregion
144180

181+
/// <inheritdoc/>
145182
public override string ToString() => "[Collection]";
146183
}
147184
}

0 commit comments

Comments
 (0)