Skip to content

Commit

Permalink
Merge pull request #2001 from boscohyun/fix/delete-column
Browse files Browse the repository at this point in the history
fix: delete `CostKind` column
  • Loading branch information
boscohyun authored Jul 7, 2023
2 parents 8a031d5 + 7668b4b commit bd90fd5
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 66 deletions.
37 changes: 10 additions & 27 deletions .Lib9c.Tests/TableData/Garages/LoadIntoMyGaragesCostSheetTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,16 @@ public class LoadIntoMyGaragesCostSheetTest
public LoadIntoMyGaragesCostSheetTest()
{
var sb = new StringBuilder();
sb.AppendLine("id,cost_kind,currency_ticker,fungible_id,garage_cost_per_unit");
sb.AppendLine("id,currency_ticker,fungible_id,garage_cost_per_unit");
sb.AppendLine(
"1,ITEM,,00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe,0.16");
"1,,00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe,0.16");
sb.AppendLine(
"2,ITEM,,3991e04dd808dc0bc24b21f5adb7bf1997312f8700daf1334bf34936e8a0813a,0.0016");
"2,,3991e04dd808dc0bc24b21f5adb7bf1997312f8700daf1334bf34936e8a0813a,0.0016");
sb.AppendLine(
"3,ITEM,,1a755098a2bc0659a063107df62e2ff9b3cdaba34d96b79519f504b996f53820,1");
"3,,1a755098a2bc0659a063107df62e2ff9b3cdaba34d96b79519f504b996f53820,1");
sb.AppendLine(
"4,ITEM,,f8faf92c9c0d0e8e06694361ea87bfc8b29a8ae8de93044b98470a57636ed0e0,10");
sb.AppendLine("5,CURRENCY,RUNE_GOLDENLEAF,,10");
"4,,f8faf92c9c0d0e8e06694361ea87bfc8b29a8ae8de93044b98470a57636ed0e0,10");
sb.AppendLine("5,RUNE_GOLDENLEAF,,10");
_sheet = new LoadIntoMyGaragesCostSheet();
_sheet.Set(sb.ToString());
}
Expand All @@ -38,63 +38,46 @@ public void Set()
Assert.Equal(5, _sheet.Count);
var row = _sheet.OrderedList[0];
Assert.Equal(1, row.Id);
Assert.Equal("ITEM", row.CostKind);
Assert.True(string.IsNullOrEmpty(row.CurrencyTicker));
Assert.Equal(
"00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe",
row.FungibleId.ToString());
Assert.Equal(0.16m, row.GarageCostPerUnit);
row = _sheet.OrderedList[1];
Assert.Equal(2, row.Id);
Assert.Equal("ITEM", row.CostKind);
Assert.True(string.IsNullOrEmpty(row.CurrencyTicker));
Assert.Equal(
"3991e04dd808dc0bc24b21f5adb7bf1997312f8700daf1334bf34936e8a0813a",
row.FungibleId.ToString());
Assert.Equal(0.0016m, row.GarageCostPerUnit);
row = _sheet.OrderedList[2];
Assert.Equal(3, row.Id);
Assert.Equal("ITEM", row.CostKind);
Assert.True(string.IsNullOrEmpty(row.CurrencyTicker));
Assert.Equal(
"1a755098a2bc0659a063107df62e2ff9b3cdaba34d96b79519f504b996f53820",
row.FungibleId.ToString());
Assert.Equal(1m, row.GarageCostPerUnit);
row = _sheet.OrderedList[3];
Assert.Equal(4, row.Id);
Assert.Equal("ITEM", row.CostKind);
Assert.True(string.IsNullOrEmpty(row.CurrencyTicker));
Assert.Equal(
"f8faf92c9c0d0e8e06694361ea87bfc8b29a8ae8de93044b98470a57636ed0e0",
row.FungibleId.ToString());
Assert.Equal(10m, row.GarageCostPerUnit);
row = _sheet.OrderedList[4];
Assert.Equal(5, row.Id);
Assert.Equal("CURRENCY", row.CostKind);
Assert.Equal("RUNE_GOLDENLEAF", row.CurrencyTicker);
Assert.Null(row.FungibleId);
Assert.Equal(10m, row.GarageCostPerUnit);
}

[Fact]
public void Set_InvalidCostKind()
{
var sb = new StringBuilder();
sb.AppendLine("id,cost_kind,currency_ticker,fungible_id,garage_cost_per_unit");
sb.AppendLine(
"1,INVALID,,00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe,0.16");

var sheet = new LoadIntoMyGaragesCostSheet();
Assert.Throws<ArgumentException>(() => sheet.Set(sb.ToString()));
}

[Fact]
public void Set_InvalidFungibleId()
{
var sb = new StringBuilder();
sb.AppendLine("id,cost_kind,currency_ticker,fungible_id,garage_cost_per_unit");
sb.AppendLine("id,currency_ticker,fungible_id,garage_cost_per_unit");
sb.AppendLine(
"1,ITEM,,INVALID,0.16");
"1,,INVALID,0.16");

var sheet = new LoadIntoMyGaragesCostSheet();
Assert.Throws<ArgumentOutOfRangeException>(() => sheet.Set(sb.ToString()));
Expand All @@ -104,9 +87,9 @@ public void Set_InvalidFungibleId()
public void Set_InvalidGarageCostPerUnit()
{
var sb = new StringBuilder();
sb.AppendLine("id,cost_kind,currency_ticker,fungible_id,garage_cost_per_unit");
sb.AppendLine("id,currency_ticker,fungible_id,garage_cost_per_unit");
sb.AppendLine(
"1,ITEM,,00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe,INVALID");
"1,,00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe,INVALID");

var sheet = new LoadIntoMyGaragesCostSheet();
Assert.Throws<ArgumentException>(() => sheet.Set(sb.ToString()));
Expand Down
13 changes: 6 additions & 7 deletions Lib9c/TableCSV/Garages/LoadIntoMyGaragesCostSheet.csv
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
id,_memo,cost_kind,currency_ticker,fungible_id,garage_cost_per_unit
id,_memo,currency_ticker,fungible_id,garage_cost_per_unit
_id,int
_cost_kind,CURRENCY|ITEM
_currency_ticker,(empty)|NCG|CRYSTAL...
_fungible_id,(empty)|3991e04dd808dc0bc24b21f5adb7bf1997312f8700daf1334bf34936e8a0813a|00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe...
_garage_cost_per_unit,1|100|0.001...
1,ap portion(500000),Item,,00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe,0.16
2,hourglass(400000),Item,,3991e04dd808dc0bc24b21f5adb7bf1997312f8700daf1334bf34936e8a0813a,0.0016
3,golden meat(800201),Item,,1a755098a2bc0659a063107df62e2ff9b3cdaba34d96b79519f504b996f53820,1
4,golden dust(600201),Item,,f8faf92c9c0d0e8e06694361ea87bfc8b29a8ae8de93044b98470a57636ed0e0,10
5,golden leaf runestone,Currency,RUNE_GOLDENLEAF,,10
1,ap portion(500000),,00dfffe23964af9b284d121dae476571b7836b8d9e2e5f510d92a840fecc64fe,0.16
2,hourglass(400000),,3991e04dd808dc0bc24b21f5adb7bf1997312f8700daf1334bf34936e8a0813a,0.0016
3,golden meat(800201),,1a755098a2bc0659a063107df62e2ff9b3cdaba34d96b79519f504b996f53820,1
4,golden dust(600201),,f8faf92c9c0d0e8e06694361ea87bfc8b29a8ae8de93044b98470a57636ed0e0,10
5,golden leaf runestone,RUNE_GOLDENLEAF,,10
40 changes: 8 additions & 32 deletions Lib9c/TableData/Garages/LoadIntoMyGaragesCostSheet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ public class Row : SheetRow<int>

public int Id { get; private set; }

/// <summary>
/// CURRENCY | ITEM
/// </summary>
public string CostKind { get; private set; }

public string CurrencyTicker { get; private set; }

public HashDigest<SHA256>? FungibleId { get; private set; }
Expand All @@ -34,22 +29,11 @@ public class Row : SheetRow<int>
public override void Set(IReadOnlyList<string> fields)
{
Id = ParseInt(fields[0]);
CostKind = string.IsNullOrEmpty(fields[1])
? null
: fields[1].ToUpperInvariant();
if (CostKind != "CURRENCY" &&
CostKind != "ITEM")
{
throw new ArgumentException(
$"CostKind must be CURRENCY or ITEM but {CostKind}.",
nameof(fields));
}

CurrencyTicker = fields[2];
FungibleId = string.IsNullOrEmpty(fields[3])
CurrencyTicker = fields[1];
FungibleId = string.IsNullOrEmpty(fields[2])
? (HashDigest<SHA256>?)null
: HashDigest<SHA256>.FromString(fields[3]);
GarageCostPerUnit = ParseDecimal(fields[4]);
: HashDigest<SHA256>.FromString(fields[2]);
GarageCostPerUnit = ParseDecimal(fields[3]);
}
}

Expand All @@ -59,17 +43,13 @@ public LoadIntoMyGaragesCostSheet() : base(nameof(LoadIntoMyGaragesCostSheet))

public decimal GetGarageCostPerUnit(string currencyTicker)
{
var row = OrderedList!.First(r =>
r.CostKind == "CURRENCY" &&
r.CurrencyTicker == currencyTicker);
var row = OrderedList!.First(r => r.CurrencyTicker == currencyTicker);
return row.GarageCostPerUnit;
}

public decimal GetGarageCostPerUnit(HashDigest<SHA256> fungibleId)
{
var row = OrderedList!.First(r =>
r.CostKind == "ITEM" &&
r.FungibleId.Equals(fungibleId));
var row = OrderedList!.First(r => r.FungibleId?.Equals(fungibleId) ?? false);
return row.GarageCostPerUnit;
}

Expand Down Expand Up @@ -131,16 +111,12 @@ public FungibleAssetValue GetGarageCost(

public bool HasCost(string currencyTicker)
{
return OrderedList!.Any(r =>
r.CostKind == "CURRENCY" &&
r.CurrencyTicker == currencyTicker);
return OrderedList!.Any(r => r.CurrencyTicker == currencyTicker);
}

public bool HasCost(HashDigest<SHA256> fungibleId)
{
return OrderedList!.Any(r =>
r.CostKind == "ITEM" &&
r.FungibleId.Equals(fungibleId));
return OrderedList!.Any(r => r.FungibleId?.Equals(fungibleId) ?? false);
}
}
}

0 comments on commit bd90fd5

Please sign in to comment.