public void BuildsComplexAccountDocument() { var createdAt = new DateTime(2020, 5, 10); var a = new ComplexAccount { AccountId = "ABC1", Balance = 12.0M, IsActive = true, CreatedAt = createdAt, AccountHolder = new User { Id = 1, Name = "Han Solo" }, Transactions = new List <Transaction> { new Transaction { Id = 123, Amount = 3.0M }, new Transaction { Id = 234, Amount = 21.0M } } }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <ComplexAccount>(a); Console.WriteLine("Constructed Document:"); Console.Write(doc.ToPrettyString()); Assert.Equal(a.AccountId, doc.GetField("AccountId").StringValue); Assert.Equal(a.Balance, doc.GetField("Balance").DecimalValue); Assert.Equal(a.IsActive, doc.GetField("IsActive").BoolValue); Assert.Equal(2, doc.GetField("Transactions").Count); Assert.Equal(createdAt, doc.GetField("CreatedAt").TimestampValue.DateTimeValue); }
public void CorrectlyConvertsIonValueWithListOfUsers() { var factory = new ValueFactory(); var doc = factory.NewEmptyStruct(); var list = factory.NewEmptyList(); list.Add(TestUtils.GetUserField(new User { Id = 101, Name = "Person 1" })); list.Add(TestUtils.GetUserField(new User { Id = 102, Name = "Person 2" })); doc.SetField("UserList", list); var converter = new IonConverter.IonDocumentConverter(); System.Console.WriteLine(doc.ToPrettyString()); var converted = converter.ConvertTo <WithListOfUsers>(doc); Assert.NotNull(converted); Assert.Equal(2, converted.UserList.Count); Assert.Equal(101, converted.UserList[0].Id); Assert.Equal(102, converted.UserList[1].Id); }
public void CorrectlyConvertsIonValueWithDictionaryStringUser() { var factory = new ValueFactory(); var doc = factory.NewEmptyStruct(); var dict = factory.NewEmptyStruct(); dict.SetField("test1", TestUtils.GetUserField(new User { Id = 102, Name = "Person 2" })); dict.SetField("test2", TestUtils.GetUserField(new User { Id = 102, Name = "Person 2" })); doc.SetField("Users", dict); var converter = new IonConverter.IonDocumentConverter(); System.Console.WriteLine(doc.ToPrettyString()); var converted = converter.ConvertTo <WithDictionaryOfStringUser>(doc); Assert.NotNull(converted); Assert.Equal(2, converted.Users.Count); Assert.True(converted.Users.ContainsKey("test1")); Assert.True(converted.Users.ContainsKey("test2")); }
public void BuildsSimpleAccountDocument() { var doc = CreateSimpleDoc("ABC1", 12.0M, true); var converter = new IonConverter.IonDocumentConverter(); var account = converter.ConvertTo <SimpleAccount>(doc); Assert.Equal("ABC1", account.AccountId); Assert.Equal(12.0M, account.Balance); Assert.Equal(true, account.IsActive); }
public void CanConvertEmptyArray() { var a = new WithIntArray { MyNumbers = new int[] {} }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <WithIntArray>(a); var listField = doc.GetField("MyNumbers"); Assert.Equal(0, listField.Count); }
public void ConvertsDateTimeToMatchingTimestamp() { var myDate = new DateTime(2020, 5, 10, 11, 23, 12); var a = new WithDateTime { MyDate = myDate }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <WithDateTime>(a); Assert.Equal( myDate, doc.GetField("MyDate").TimestampValue.DateTimeValue ); }
public void BuildsSimpleAccountDocument() { var a = new SimpleAccount { AccountId = "ABC1", Balance = 12.0M, IsActive = true }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <SimpleAccount>(a); Console.WriteLine("Constructed Document:"); Console.Write(doc.ToPrettyString()); Assert.Equal(a.AccountId, doc.GetField("AccountId").StringValue); Assert.Equal(a.Balance, doc.GetField("Balance").DecimalValue); Assert.Equal(a.IsActive, doc.GetField("IsActive").BoolValue); }
public void CanConvertIntArray() { var a = new WithIntArray { MyNumbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <WithIntArray>(a); var listField = doc.GetField("MyNumbers"); Assert.Equal(10, listField.Count); var element = listField.GetElementAt(8); Assert.Equal(9, element.BigIntegerValue); }
public void CanConvertArrayLists() { var a = new WithArrayList { MyList = new ArrayList { 1, 2, 3, 4, 5, 6, 7, 8 } }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <WithArrayList>(a); var listField = doc.GetField("MyList"); Assert.Equal(8, listField.Count); var firstElement = listField.GetElementAt(4); Assert.Equal(5, firstElement.BigIntegerValue); }
public void CanConvertDecimalKeyDictionary() { var a = new WithDecimalDictionary { MyDict = new Dictionary <decimal, int> { { 1.0M, 1002 }, { 123.3M, 1001 }, { 3423.543M, 1004 }, { 52.983M, 1003 } } }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <WithDecimalDictionary>(a); var listField = doc.GetField("MyDict"); var itemField = listField.GetField(3423.543M.ToString()); Assert.Equal(1004, itemField.BigIntegerValue); }
public void CorrectlyConvertsIonValueWithDictionaryIntString() { var factory = new ValueFactory(); var doc = factory.NewEmptyStruct(); var dict = factory.NewEmptyStruct(); dict.SetField("1", factory.NewString("test")); dict.SetField("2", factory.NewString("test2")); doc.SetField("MyDict", dict); var converter = new IonConverter.IonDocumentConverter(); System.Console.WriteLine(doc.ToPrettyString()); var converted = converter.ConvertTo <WithDictionaryOfIntString>(doc); Assert.NotNull(converted); Assert.Equal(2, converted.MyDict.Count); Assert.True(converted.MyDict.ContainsKey(1)); Assert.True(converted.MyDict.ContainsKey(2)); }
public void CanConvertStringDictionary() { var a = new WithStringDictionary { MyDict = new Dictionary <string, string> { { "test1", "Item 1" }, { "test2", "Item 2" }, { "test3", "Item 3" }, { "test4", "Item 4" } } }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <WithStringDictionary>(a); var listField = doc.GetField("MyDict"); var itemField = listField.GetField("test2"); Assert.Equal(4, listField.Count); Assert.Equal("Item 2", itemField.StringValue); }
public void CanConvertGenericLists() { var a = new WithGenericList { MyList = new List <string> { "Item 1", "Item 2", "Item 3", "Item 4" } }; var builder = new IonConverter.IonDocumentConverter(); var doc = builder.ConvertFrom <WithGenericList>(a); var listField = doc.GetField("MyList"); Assert.Equal(4, listField.Count); var firstElement = listField.GetElementAt(0); Assert.Equal("Item 1", firstElement.StringValue); }
public void CorrectlyConvertsIonValueWithListOfInt() { var factory = new ValueFactory(); var doc = factory.NewEmptyStruct(); var list = factory.NewEmptyList(); list.Add(factory.NewInt(20)); list.Add(factory.NewInt(30)); list.Add(factory.NewInt(40)); doc.SetField("MyList", list); var converter = new IonConverter.IonDocumentConverter(); System.Console.WriteLine(doc.ToPrettyString()); var converted = converter.ConvertTo <WithListOfInts>(doc); Assert.NotNull(converted); Assert.Equal(3, converted.MyList.Count); Assert.Equal(20, converted.MyList[0]); Assert.Equal(30, converted.MyList[1]); Assert.Equal(40, converted.MyList[2]); }
public void BuildsComplexAccountDocument() { var account = new ComplexAccount { AccountId = "ABC1", Balance = 12.0M, IsActive = true, Transactions = new List <Transaction> { new Transaction { Id = 1, Amount = 10.0M }, new Transaction { Id = 2, Amount = 21.0M }, } }; var doc = CreateComplexDoc(account); var converter = new IonConverter.IonDocumentConverter(); var convertedAccount = converter.ConvertTo <ComplexAccount>(doc); Assert.Equal(12.0M, convertedAccount.Balance); Assert.Equal(true, convertedAccount.IsActive); Assert.Equal(2, convertedAccount.Transactions.Count); Assert.Equal(21.0M, convertedAccount.Transactions[1].Amount); }