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);
        }
示例#2
0
        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);
        }
示例#3
0
        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"));
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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
                );
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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);
        }
示例#10
0
        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);
        }
示例#11
0
        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));
        }
示例#12
0
        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);
        }
示例#13
0
        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);
        }
示例#14
0
        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]);
        }
示例#15
0
        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);
        }