diff --git a/stellar-dotnet-sdk-test/responses/LedgerDeserializeTest.cs b/stellar-dotnet-sdk-test/responses/LedgerDeserializeTest.cs index 3e3aad11f..64d5d39d8 100644 --- a/stellar-dotnet-sdk-test/responses/LedgerDeserializeTest.cs +++ b/stellar-dotnet-sdk-test/responses/LedgerDeserializeTest.cs @@ -1,69 +1,71 @@ -using System.IO; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Newtonsoft.Json; -using stellar_dotnet_sdk.responses; - -namespace stellar_dotnet_sdk_test.responses -{ - [TestClass] - public class LedgerDeserializeTest - { - [TestMethod] - public void TestDeserialize() - { - var json = File.ReadAllText(Path.Combine("testdata", "ledger.json")); - var ledger = JsonSingleton.GetInstance(json); - - AssertTestData(ledger); - } - - [TestMethod] - public void TestSerializeDeserialize() - { - var json = File.ReadAllText(Path.Combine("testdata", "ledger.json")); - var ledger = JsonSingleton.GetInstance(json); - var serialized = JsonConvert.SerializeObject(ledger); - var back = JsonConvert.DeserializeObject(serialized); - - AssertTestData(back); - } - - [TestMethod] - public void TestSerializeDeserializeNullFailedTransactionCount() - { - var json = File.ReadAllText(Path.Combine("testdata", "ledgerNullFailedTransactionCount.json")); - var ledger = JsonSingleton.GetInstance(json); - var serialized = JsonConvert.SerializeObject(ledger); - var back = JsonConvert.DeserializeObject(serialized); - - Assert.AreEqual(ledger.Hash, "7f7cc428fa2b5f17fea0dba3bdbd36972f3dff4fae9345cc1f013b1133bbf7c4"); - Assert.AreEqual(ledger.PagingToken, "2147483648000"); - Assert.AreEqual(ledger.PrevHash, "29a54d2641d0051e4748d1ed1c9e53bd3634b2aaa823fb709341b93328c6d313"); - Assert.AreEqual(ledger.Sequence, (uint)500); - Assert.AreEqual(ledger.SuccessfulTransactionCount, 0); - Assert.AreEqual(ledger.FailedTransactionCount, null); - Assert.AreEqual(ledger.OperationCount, 0); - } - - public static void AssertTestData(LedgerResponse ledger) - { - Assert.AreEqual(ledger.Hash, "686bb246db89b099cd3963a4633eb5e4315d89dfd3c00594c80b41a483847bfa"); - Assert.AreEqual(ledger.PagingToken, "3860428274794496"); - Assert.AreEqual(ledger.PrevHash, "50c8695eb32171a19858413e397cc50b504ceacc819010bdf8ff873aff7858d7"); - Assert.AreEqual(ledger.Sequence, (uint)898826); - Assert.AreEqual(ledger.SuccessfulTransactionCount, 3); - Assert.AreEqual(ledger.FailedTransactionCount, 2); - Assert.AreEqual(ledger.OperationCount, 10); - Assert.AreEqual(ledger.ClosedAt, "2015-11-19T21:35:59Z"); - Assert.AreEqual(ledger.TotalCoins, "101343867604.8975480"); - Assert.AreEqual(ledger.FeePool, "1908.2248818"); - Assert.AreEqual(ledger.BaseFee, 100); - Assert.AreEqual(ledger.BaseReserve, "10.0000000"); - Assert.AreEqual(ledger.MaxTxSetSize, 50); - Assert.AreEqual(ledger.Links.Effects.Href, "/ledgers/898826/effects{?cursor,limit,order}"); - Assert.AreEqual(ledger.Links.Operations.Href, "/ledgers/898826/operations{?cursor,limit,order}"); - Assert.AreEqual(ledger.Links.Self.Href, "/ledgers/898826"); - Assert.AreEqual(ledger.Links.Transactions.Href, "/ledgers/898826/transactions{?cursor,limit,order}"); - } - } +using System.IO; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using stellar_dotnet_sdk.responses; + +namespace stellar_dotnet_sdk_test.responses +{ + [TestClass] + public class LedgerDeserializeTest + { + [TestMethod] + public void TestDeserialize() + { + var json = File.ReadAllText(Path.Combine("testdata", "ledger.json")); + var ledger = JsonSingleton.GetInstance(json); + + AssertTestData(ledger); + } + + [TestMethod] + public void TestSerializeDeserialize() + { + var json = File.ReadAllText(Path.Combine("testdata", "ledger.json")); + var ledger = JsonSingleton.GetInstance(json); + var serialized = JsonConvert.SerializeObject(ledger); + var back = JsonConvert.DeserializeObject(serialized); + + AssertTestData(back); + } + + [TestMethod] + public void TestSerializeDeserializeNullFailedTransactionCount() + { + var json = File.ReadAllText(Path.Combine("testdata", "ledgerNullValues.json")); + var ledger = JsonSingleton.GetInstance(json); + var serialized = JsonConvert.SerializeObject(ledger); + var back = JsonConvert.DeserializeObject(serialized); + + Assert.AreEqual(ledger.Hash, "7f7cc428fa2b5f17fea0dba3bdbd36972f3dff4fae9345cc1f013b1133bbf7c4"); + Assert.AreEqual(ledger.PagingToken, "2147483648000"); + Assert.AreEqual(ledger.PrevHash, "29a54d2641d0051e4748d1ed1c9e53bd3634b2aaa823fb709341b93328c6d313"); + Assert.AreEqual(ledger.Sequence, (uint)500); + Assert.AreEqual(ledger.SuccessfulTransactionCount, 0); + Assert.AreEqual(ledger.FailedTransactionCount, null); + Assert.AreEqual(ledger.TxSetOperationCount, null); + Assert.AreEqual(ledger.OperationCount, 0); + } + + public static void AssertTestData(LedgerResponse ledger) + { + Assert.AreEqual(ledger.Hash, "686bb246db89b099cd3963a4633eb5e4315d89dfd3c00594c80b41a483847bfa"); + Assert.AreEqual(ledger.PagingToken, "3860428274794496"); + Assert.AreEqual(ledger.PrevHash, "50c8695eb32171a19858413e397cc50b504ceacc819010bdf8ff873aff7858d7"); + Assert.AreEqual(ledger.Sequence, (uint)898826); + Assert.AreEqual(ledger.SuccessfulTransactionCount, 3); + Assert.AreEqual(ledger.FailedTransactionCount, 2); + Assert.AreEqual(ledger.OperationCount, 10); + Assert.AreEqual(ledger.ClosedAt, "2015-11-19T21:35:59Z"); + Assert.AreEqual(ledger.TotalCoins, "101343867604.8975480"); + Assert.AreEqual(ledger.FeePool, "1908.2248818"); + Assert.AreEqual(ledger.BaseFee, 100); + Assert.AreEqual(ledger.BaseReserve, "10.0000000"); + Assert.AreEqual(ledger.MaxTxSetSize, 50); + Assert.AreEqual(ledger.TxSetOperationCount, 5); + Assert.AreEqual(ledger.Links.Effects.Href, "/ledgers/898826/effects{?cursor,limit,order}"); + Assert.AreEqual(ledger.Links.Operations.Href, "/ledgers/898826/operations{?cursor,limit,order}"); + Assert.AreEqual(ledger.Links.Self.Href, "/ledgers/898826"); + Assert.AreEqual(ledger.Links.Transactions.Href, "/ledgers/898826/transactions{?cursor,limit,order}"); + } + } } \ No newline at end of file diff --git a/stellar-dotnet-sdk-test/stellar-dotnet-sdk-test.csproj b/stellar-dotnet-sdk-test/stellar-dotnet-sdk-test.csproj index a08b8b188..6b68af2fa 100644 --- a/stellar-dotnet-sdk-test/stellar-dotnet-sdk-test.csproj +++ b/stellar-dotnet-sdk-test/stellar-dotnet-sdk-test.csproj @@ -134,7 +134,7 @@ PreserveNewest - + PreserveNewest diff --git a/stellar-dotnet-sdk-test/testdata/ledger.json b/stellar-dotnet-sdk-test/testdata/ledger.json index 1c0b2fb2c..7a2368514 100644 --- a/stellar-dotnet-sdk-test/testdata/ledger.json +++ b/stellar-dotnet-sdk-test/testdata/ledger.json @@ -1,33 +1,34 @@ -{ - "_links": { - "effects": { - "href": "/ledgers/898826/effects{?cursor,limit,order}", - "templated": true - }, - "operations": { - "href": "/ledgers/898826/operations{?cursor,limit,order}", - "templated": true - }, - "self": { - "href": "/ledgers/898826" - }, - "transactions": { - "href": "/ledgers/898826/transactions{?cursor,limit,order}", - "templated": true - } - }, - "id": "686bb246db89b099cd3963a4633eb5e4315d89dfd3c00594c80b41a483847bfa", - "paging_token": "3860428274794496", - "hash": "686bb246db89b099cd3963a4633eb5e4315d89dfd3c00594c80b41a483847bfa", - "prev_hash": "50c8695eb32171a19858413e397cc50b504ceacc819010bdf8ff873aff7858d7", - "sequence": 898826, - "successful_transaction_count": 3, - "failed_transaction_count": 2, - "operation_count": 10, - "closed_at": "2015-11-19T21:35:59Z", - "total_coins": "101343867604.8975480", - "fee_pool": "1908.2248818", - "base_fee": 100, - "base_reserve": "10.0000000", - "max_tx_set_size": 50 -} +{ + "_links": { + "effects": { + "href": "/ledgers/898826/effects{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "/ledgers/898826/operations{?cursor,limit,order}", + "templated": true + }, + "self": { + "href": "/ledgers/898826" + }, + "transactions": { + "href": "/ledgers/898826/transactions{?cursor,limit,order}", + "templated": true + } + }, + "id": "686bb246db89b099cd3963a4633eb5e4315d89dfd3c00594c80b41a483847bfa", + "paging_token": "3860428274794496", + "hash": "686bb246db89b099cd3963a4633eb5e4315d89dfd3c00594c80b41a483847bfa", + "prev_hash": "50c8695eb32171a19858413e397cc50b504ceacc819010bdf8ff873aff7858d7", + "sequence": 898826, + "successful_transaction_count": 3, + "failed_transaction_count": 2, + "operation_count": 10, + "closed_at": "2015-11-19T21:35:59Z", + "total_coins": "101343867604.8975480", + "fee_pool": "1908.2248818", + "base_fee": 100, + "base_reserve": "10.0000000", + "max_tx_set_size": 50, + "tx_set_operation_count": 5 +} diff --git a/stellar-dotnet-sdk-test/testdata/ledgerNullFailedTransactionCount.json b/stellar-dotnet-sdk-test/testdata/ledgerNullValues.json similarity index 95% rename from stellar-dotnet-sdk-test/testdata/ledgerNullFailedTransactionCount.json rename to stellar-dotnet-sdk-test/testdata/ledgerNullValues.json index 990199f19..b9b9228b6 100644 --- a/stellar-dotnet-sdk-test/testdata/ledgerNullFailedTransactionCount.json +++ b/stellar-dotnet-sdk-test/testdata/ledgerNullValues.json @@ -1,39 +1,40 @@ -{ - "_links": { - "self": { - "href": "https://horizon.stellar.org/ledgers/500" - }, - "transactions": { - "href": "https://horizon.stellar.org/ledgers/500/transactions{?cursor,limit,order}", - "templated": true - }, - "operations": { - "href": "https://horizon.stellar.org/ledgers/500/operations{?cursor,limit,order}", - "templated": true - }, - "payments": { - "href": "https://horizon.stellar.org/ledgers/500/payments{?cursor,limit,order}", - "templated": true - }, - "effects": { - "href": "https://horizon.stellar.org/ledgers/500/effects{?cursor,limit,order}", - "templated": true - } - }, - "id": "7f7cc428fa2b5f17fea0dba3bdbd36972f3dff4fae9345cc1f013b1133bbf7c4", - "paging_token": "2147483648000", - "hash": "7f7cc428fa2b5f17fea0dba3bdbd36972f3dff4fae9345cc1f013b1133bbf7c4", - "prev_hash": "29a54d2641d0051e4748d1ed1c9e53bd3634b2aaa823fb709341b93328c6d313", - "sequence": 500, - "successful_transaction_count": 0, - "failed_transaction_count": null, - "operation_count": 0, - "closed_at": "2015-09-30T17:57:35Z", - "total_coins": "100000000000.0000000", - "fee_pool": "0.0000300", - "base_fee_in_stroops": 100, - "base_reserve_in_stroops": 100000000, - "max_tx_set_size": 500, - "protocol_version": 1, - "header_xdr": "AAAAASmlTSZB0AUeR0jR7RyeU702NLKqqCP7cJNBuTMoxtMTvQuUcf91lhCUKcjAObXN2MfX4A9BGBcLv3vpQg2PaR4AAAAAVgwijwAAAAAAAAAA3z9hmASpL9tAVxktxD3XSOp3itxSvEmM6AUkwBS4ERn5SVlSrJsT9oq40iZ1FcFtoE02V28CxdLQZTwKxE8W5gAAAfQN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAAAH0+UlZUqybE/aKuNImdRXBbaBNNldvAsXS0GU8CsRPFuYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +{ + "_links": { + "self": { + "href": "https://horizon.stellar.org/ledgers/500" + }, + "transactions": { + "href": "https://horizon.stellar.org/ledgers/500/transactions{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "https://horizon.stellar.org/ledgers/500/operations{?cursor,limit,order}", + "templated": true + }, + "payments": { + "href": "https://horizon.stellar.org/ledgers/500/payments{?cursor,limit,order}", + "templated": true + }, + "effects": { + "href": "https://horizon.stellar.org/ledgers/500/effects{?cursor,limit,order}", + "templated": true + } + }, + "id": "7f7cc428fa2b5f17fea0dba3bdbd36972f3dff4fae9345cc1f013b1133bbf7c4", + "paging_token": "2147483648000", + "hash": "7f7cc428fa2b5f17fea0dba3bdbd36972f3dff4fae9345cc1f013b1133bbf7c4", + "prev_hash": "29a54d2641d0051e4748d1ed1c9e53bd3634b2aaa823fb709341b93328c6d313", + "sequence": 500, + "successful_transaction_count": 0, + "failed_transaction_count": null, + "operation_count": 0, + "closed_at": "2015-09-30T17:57:35Z", + "total_coins": "100000000000.0000000", + "fee_pool": "0.0000300", + "base_fee_in_stroops": 100, + "base_reserve_in_stroops": 100000000, + "max_tx_set_size": 500, + "tx_set_operation_count": null, + "protocol_version": 1, + "header_xdr": "AAAAASmlTSZB0AUeR0jR7RyeU702NLKqqCP7cJNBuTMoxtMTvQuUcf91lhCUKcjAObXN2MfX4A9BGBcLv3vpQg2PaR4AAAAAVgwijwAAAAAAAAAA3z9hmASpL9tAVxktxD3XSOp3itxSvEmM6AUkwBS4ERn5SVlSrJsT9oq40iZ1FcFtoE02V28CxdLQZTwKxE8W5gAAAfQN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAAAH0+UlZUqybE/aKuNImdRXBbaBNNldvAsXS0GU8CsRPFuYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" } \ No newline at end of file diff --git a/stellar-dotnet-sdk/responses/LedgerResponse.cs b/stellar-dotnet-sdk/responses/LedgerResponse.cs index 9513f740d..b51ed45f8 100644 --- a/stellar-dotnet-sdk/responses/LedgerResponse.cs +++ b/stellar-dotnet-sdk/responses/LedgerResponse.cs @@ -1,108 +1,113 @@ -using System; -using Newtonsoft.Json; -using stellar_dotnet_sdk.responses.effects; -using stellar_dotnet_sdk.responses.operations; -using stellar_dotnet_sdk.responses.page; - -namespace stellar_dotnet_sdk.responses -{ - public class LedgerResponse : Response, IPagingToken - { - [JsonProperty(PropertyName = "sequence")] - public uint Sequence { get; private set; } - - [JsonProperty(PropertyName = "hash")] public string Hash { get; private set; } - - [JsonProperty(PropertyName = "paging_token")] - public string PagingToken { get; private set; } - - [JsonProperty(PropertyName = "prev_hash")] - public string PrevHash { get; private set; } - - [JsonProperty(PropertyName = "successful_transaction_count")] - public int SuccessfulTransactionCount { get; private set; } - - [JsonProperty(PropertyName = "failed_transaction_count")] - public int? FailedTransactionCount { get; private set; } - - [JsonProperty(PropertyName = "operation_count")] - public int OperationCount { get; private set; } - - [JsonProperty(PropertyName = "closed_at")] - public string ClosedAt { get; private set; } - - [JsonProperty(PropertyName = "total_coins")] - public string TotalCoins { get; private set; } - - [JsonProperty(PropertyName = "fee_pool")] - public string FeePool { get; private set; } - - [JsonProperty(PropertyName = "base_fee")] - public long BaseFee { get; private set; } - - [JsonProperty(PropertyName = "base_reserve")] - public string BaseReserve { get; private set; } - - [JsonProperty(PropertyName = "max_tx_set_size")] - public int MaxTxSetSize { get; private set; } - - [JsonProperty(PropertyName = "base_fee_in_stroops")] - public String BaseFeeInStroops { get; private set; } - - [JsonProperty(PropertyName = "base_reserve_in_stroops")] - public String BaseReserveInStroops { get; private set; } - - [JsonProperty(PropertyName = "_links")] - public LedgerResponseLinks Links { get; private set; } - - public LedgerResponse(uint sequence, String hash, String pagingToken, String prevHash, - int? failedTransactionCount, int successfulTransactionCount, int operationCount, String closedAt, - String totalCoins, String feePool, long baseFee, String baseReserve, String baseFeeInStroops, - String baseReserveInStroops, int maxTxSetSize, LedgerResponseLinks links) - { - Sequence = sequence; - Hash = hash; - PagingToken = pagingToken; - PrevHash = prevHash; - FailedTransactionCount = failedTransactionCount; - SuccessfulTransactionCount = successfulTransactionCount; - OperationCount = operationCount; - ClosedAt = closedAt; - TotalCoins = totalCoins; - FeePool = feePool; - BaseFee = baseFee; - BaseFeeInStroops = baseFeeInStroops; - BaseReserve = baseReserve; - BaseReserveInStroops = baseReserveInStroops; - MaxTxSetSize = maxTxSetSize; - Links = links; - } - - /// - /// Links connected to ledger. - /// - public class LedgerResponseLinks - { - [JsonProperty(PropertyName = "effects")] - public Link> Effects { get; private set; } - - [JsonProperty(PropertyName = "operations")] - public Link> Operations { get; private set; } - - [JsonProperty(PropertyName = "self")] - public Link Self { get; private set; } - - [JsonProperty(PropertyName = "transactions")] - public Link> Transactions { get; private set; } - - public LedgerResponseLinks(Link> effects, Link> operations, - Link self, Link> transactions) - { - Effects = effects; - Operations = operations; - Self = self; - Transactions = transactions; - } - } - } +using System; +using Newtonsoft.Json; +using stellar_dotnet_sdk.responses.effects; +using stellar_dotnet_sdk.responses.operations; +using stellar_dotnet_sdk.responses.page; + +namespace stellar_dotnet_sdk.responses +{ + public class LedgerResponse : Response, IPagingToken + { + [JsonProperty(PropertyName = "sequence")] + public uint Sequence { get; private set; } + + [JsonProperty(PropertyName = "hash")] + public string Hash { get; private set; } + + [JsonProperty(PropertyName = "paging_token")] + public string PagingToken { get; private set; } + + [JsonProperty(PropertyName = "prev_hash")] + public string PrevHash { get; private set; } + + [JsonProperty(PropertyName = "successful_transaction_count")] + public int SuccessfulTransactionCount { get; private set; } + + [JsonProperty(PropertyName = "failed_transaction_count")] + public int? FailedTransactionCount { get; private set; } + + [JsonProperty(PropertyName = "operation_count")] + public int OperationCount { get; private set; } + + [JsonProperty(PropertyName = "closed_at")] + public string ClosedAt { get; private set; } + + [JsonProperty(PropertyName = "total_coins")] + public string TotalCoins { get; private set; } + + [JsonProperty(PropertyName = "fee_pool")] + public string FeePool { get; private set; } + + [JsonProperty(PropertyName = "base_fee")] + public long BaseFee { get; private set; } + + [JsonProperty(PropertyName = "base_reserve")] + public string BaseReserve { get; private set; } + + [JsonProperty(PropertyName = "max_tx_set_size")] + public int MaxTxSetSize { get; private set; } + + [JsonProperty(PropertyName = "base_fee_in_stroops")] + public String BaseFeeInStroops { get; private set; } + + [JsonProperty(PropertyName = "base_reserve_in_stroops")] + public String BaseReserveInStroops { get; private set; } + + [JsonProperty(PropertyName = "tx_set_operation_count")] + public int? TxSetOperationCount { get; private set; } + + [JsonProperty(PropertyName = "_links")] + public LedgerResponseLinks Links { get; private set; } + + public LedgerResponse(uint sequence, String hash, String pagingToken, String prevHash, + int? failedTransactionCount, int successfulTransactionCount, int operationCount, String closedAt, + String totalCoins, String feePool, long baseFee, String baseReserve, String baseFeeInStroops, + String baseReserveInStroops, int maxTxSetSize, int? txSetOperationCount, LedgerResponseLinks links) + { + Sequence = sequence; + Hash = hash; + PagingToken = pagingToken; + PrevHash = prevHash; + FailedTransactionCount = failedTransactionCount; + SuccessfulTransactionCount = successfulTransactionCount; + OperationCount = operationCount; + ClosedAt = closedAt; + TotalCoins = totalCoins; + FeePool = feePool; + BaseFee = baseFee; + BaseFeeInStroops = baseFeeInStroops; + BaseReserve = baseReserve; + BaseReserveInStroops = baseReserveInStroops; + MaxTxSetSize = maxTxSetSize; + TxSetOperationCount = txSetOperationCount; + Links = links; + } + + /// + /// Links connected to ledger. + /// + public class LedgerResponseLinks + { + [JsonProperty(PropertyName = "effects")] + public Link> Effects { get; private set; } + + [JsonProperty(PropertyName = "operations")] + public Link> Operations { get; private set; } + + [JsonProperty(PropertyName = "self")] + public Link Self { get; private set; } + + [JsonProperty(PropertyName = "transactions")] + public Link> Transactions { get; private set; } + + public LedgerResponseLinks(Link> effects, Link> operations, + Link self, Link> transactions) + { + Effects = effects; + Operations = operations; + Self = self; + Transactions = transactions; + } + } + } } \ No newline at end of file