Skip to content
Merged
Changes from 11 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
b8601c0
AVRO-3360 Updated XML documentation
Feb 3, 2022
d01699a
Revert "AVRO-3360 Updated XML documentation"
Feb 3, 2022
83093e1
Merge branch 'apache:master' into master
KyleSchoonover Feb 4, 2022
c992da4
Merge branch 'apache:master' into master
KyleSchoonover Feb 10, 2022
fa5f7c2
Merge branch 'apache:master' into master
KyleSchoonover Feb 14, 2022
6989e61
Merge branch 'apache:master' into master
KyleSchoonover Feb 16, 2022
d06604a
Merge branch 'apache:master' into master
KyleSchoonover Feb 24, 2022
2b39bb0
Merge branch 'apache:master' into master
KyleSchoonover Feb 28, 2022
f8a7611
Merge branch 'apache:master' into master
KyleSchoonover Mar 9, 2022
3e1eb47
AVRO-3458 Added tests for GenericRecord
KyleSchoonover Mar 18, 2022
a5fa2ef
Merge branch 'apache:master' into master
KyleSchoonover Mar 18, 2022
0216b4d
Merge branch 'apache:master' into master
KyleSchoonover Mar 21, 2022
cefce73
Moved Schema to const
KyleSchoonover Mar 21, 2022
74cdc41
using discard
KyleSchoonover Mar 30, 2022
e3a5376
Empty
KyleSchoonover Apr 8, 2022
d97a23c
Merge branch 'apache:master' into master
KyleSchoonover Apr 8, 2022
1381616
Merge branch 'master' into AVRO-3458
KyleSchoonover Apr 8, 2022
e42c4f6
Add license
KyleSchoonover Apr 8, 2022
e1db956
Merge branch 'apache:master' into master
KyleSchoonover Apr 13, 2022
e586782
Merge branch 'apache:master' into master
KyleSchoonover Apr 14, 2022
9ab3fb2
Merge branch 'apache:master' into master
KyleSchoonover Apr 19, 2022
e9301fd
Merge branch 'master' into AVRO-3458
KyleSchoonover Apr 19, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 202 additions & 0 deletions lang/csharp/src/apache/test/Generic/GenericRecordTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
using System;
using System.Collections.Generic;
using Avro.Generic;
using NUnit.Framework;

namespace Avro.test.Generic
{
[TestFixture]
public class GenericRecordTests
{
private const string baseSchema = "{\"type\":\"record\",\"name\":\"r\",\"fields\":" +
"[{\"name\":\"f2\",\"type\":\"int\"},{\"name\":\"f1\",\"type\":\"boolean\"}]}";

[Test]
public void TestAddByFieldNameThrows()
{
GenericRecord genericRecord = GetBaseGenericRecord();

// Field does not exist
Assert.Throws<AvroException>(() => { genericRecord.Add("badField", "test"); });
}

[Test]
public void TestAddByPosition()
{
GenericRecord genericRecord = GetBaseGenericRecord();

genericRecord.Add(0, 2);

object value = genericRecord.GetValue(0);

Assert.IsNotNull(value);
Assert.IsTrue(value is int);
Assert.AreEqual(2, (int)value);
}

[Test]
public void TestAddByPositionThrows()
{
GenericRecord genericRecord = GetBaseGenericRecord();

Assert.Throws<IndexOutOfRangeException>(() => { genericRecord.Add(2, 2); });
}

[Test]
public void TestEquals()
{
GenericRecord genericRecord = GetBaseGenericRecord();
GenericRecord genericRecord2 = GetBaseGenericRecord();

Assert.IsTrue(genericRecord.Equals(genericRecord2));
}

[Test]
public void TestEqualsNotEqual()
{
GenericRecord genericRecord = GetBaseGenericRecord();
GenericRecord genericRecord2 = GetBaseGenericRecord();
genericRecord2.Add(0, 2);

Assert.IsFalse(genericRecord.Equals(genericRecord2));
}

[Test]
public void TestEqualsObject()
{
GenericRecord genericRecord = GetBaseGenericRecord();
object genericRecord2 = genericRecord;

Assert.IsTrue(genericRecord.Equals(genericRecord2));
}

[Test]
public void TestEqualsObjectNotEqual()
{
GenericRecord genericRecord = GetBaseGenericRecord();
GenericRecord genericRecord2 = GetBaseGenericRecord();
genericRecord2.Add(0, 2);

Assert.IsFalse(genericRecord.Equals((object)genericRecord2));
}

[Test]
public void TestEqualsObjectNullObject()
{
GenericRecord genericRecord = GetBaseGenericRecord();

Assert.IsFalse(genericRecord.Equals((object)null));
}

[Test]
public void TestGetHashCode()
{
int hashCode = GetBaseGenericRecord().GetHashCode();
Assert.IsTrue(hashCode > 0);
}

[Test]
public void TestGetValue()
{
GenericRecord genericRecord = GetBaseGenericRecord();

object value = genericRecord.GetValue(0);

Assert.IsNotNull(value);
Assert.IsTrue(value is int);
Assert.AreEqual(1, (int)value);
}

[Test]
public void TestKeyValueLookup()
{
GenericRecord genericRecord = GetBaseGenericRecord();

// Key Exists
object existingKey = genericRecord["f2"];
Assert.IsNotNull(existingKey);
Assert.IsTrue(existingKey is int);
}

[Test]
public void TestKeyValueLookupThrows()
{
GenericRecord genericRecord = GetBaseGenericRecord();

// Key does not exist
Assert.Throws<KeyNotFoundException>(() => { object missingKey = genericRecord["badField"]; });
}

[Test]
public void TestToString()
{
GenericRecord genericRecord = GetBaseGenericRecord();
string str = genericRecord.ToString();
string expectedValue = "Schema: {\"type\":\"record\",\"name\":\"r\",\"fields\":" +
"[{\"name\":\"f2\",\"type\":\"int\"},{\"name\":\"f1\",\"type\":" +
"\"boolean\"}]}, contents: { f2: 1, f1: True, }";

Assert.AreEqual(expectedValue, str);
}

[Test]
public void TestTryGetValue()
{
GenericRecord genericRecord = GetBaseGenericRecord();

// Value exists
bool returnResult = genericRecord.TryGetValue("f2", out object result);

Assert.IsTrue(returnResult);
Assert.IsNotNull(result);
Assert.IsTrue(result is int);
Assert.AreEqual(1, (int)result);
}

[Test]
public void TestTryGetValueByPosition()
{
GenericRecord genericRecord = GetBaseGenericRecord();

bool returnResult = genericRecord.TryGetValue(0, out object value);

Assert.IsTrue(returnResult);
Assert.IsNotNull(value);
Assert.IsTrue(value is int);
Assert.AreEqual(1, (int)value);
}

[Test]
public void TestTryGetValueByPositionNotFound()
{
GenericRecord genericRecord = GetBaseGenericRecord();

bool returnResult = genericRecord.TryGetValue(3, out object value);

Assert.IsFalse(returnResult);
Assert.IsNull(value);
}

[Test]
public void TestTryGetValueNotFound()
{
GenericRecord genericRecord = GetBaseGenericRecord();

// Value exists
bool returnResult = genericRecord.TryGetValue("badField", out object result);

Assert.IsFalse(returnResult);
Assert.IsNull(result);
}

private GenericRecord GetBaseGenericRecord()
{
RecordSchema testSchema = Schema.Parse(baseSchema) as RecordSchema;
GenericRecord genericRecord = new GenericRecord(testSchema);
genericRecord.Add("f2", 1);
genericRecord.Add("f1", true);

return genericRecord;
}
}
}