Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: delete CostKind column #2001

Merged
merged 1 commit into from
Jul 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
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);
}
}
}