-
Notifications
You must be signed in to change notification settings - Fork 184
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
テストデータのTOML化 #131
Comments
シークレットダイスかどうかについて、シークレットダイスでないテストケースがほとんどなので、以下のような規則にすると書きやすいです。
|
rands をどのように書くかのアイデア出しです。 現行
pros: オブジェクトとして処理しやすい d6rands d10rands で指定
pros: 入れ子解消 default_rand_max を追加
pros: 入れ子解消 指定なしなら現行も使える(はず) 文字列で指定
pros: 入れ子解消 互換性 |
面と値を分けて書く
|
各案に対する私見現行妥当 d6rands d10rands で指定解釈するツールの負担が大きいのでやめたほうがいい default_rand_max を追加現行と二重で表記できるようにしないと、実用できないので、解釈する時に若干面倒そう。記述量の少なさはピカイチ。 文字列で指定自分で考えといて、本末転倒感がすごい。ただ、パースの難易度は相当低いはず 面と値を分けて書く独自記述のなさと、解釈の容易さの両方を兼ね備えているが、記述および視認に難あり。 |
現行案でも、randsを複数行で書けば見辛さ等の問題は緩和できるかもしれない [[ShinobiGami]]
input = "s2d6"
output = "5"
secret = true
rands = [
[1, 6],
[4, 6],
] |
d6rands、d10randsのように種類ごとに書く方法と、default_rand_maxを指定する方法は、現実的ではないです。実はテストケースの中に、途中でダイスの種類が変わるものがあります。この場合の表現が不可能であるか、できても非常に複雑になりそうです。 例:ダブルクロスの感情表(ET) |
一応書きますが [[ShinobiGami]]
input = "s2d6"
output = "5"
secret = true
default_rand_max = 6
rands = [1, 4]
[[ShinobiGami]]
input = "s2d6"
output = "5"
secret = true
default_rand_max = 6
rands = [1, [4,6]]
[[ShinobiGami]]
input = "s2d6"
output = "5"
secret = true
rands = [[1,6], [4,6]] |
その仕様忘れてました……
https://qiita.com/minoritea/items/c0de47b8beb813c655d4#%E9%85%8D%E5%88%97 |
とはいえ、
|
ふと思いついたのですが、こんな記載もできますね [[ShinobiGami]]
input = "s2d6"
output = "5"
secret = true
[[ShinobiGami.rands]]
max = 6
rand = 1
[[ShinobiGami.rands]]
max = 6
rand = 4 パースすると、こうなります {"ShinobiGami"=>[{"input"=>"s2d6", "output"=>"5", "secret"=>true, "rands"=>[{"max"=>6, "rand"=>1}, {"max"=>6, "rand"=>4}]}]} |
インデントしないとテストケースの境界がわかりづらいので、その書き方は避けたい気がします。 |
📝 [[a]]
[[a.b]]
c=1
[[a]]
[[a.b]]
c=2 みたいな書き方も可能で、jsonに直すと以下のようになる。 {
"a": [
{
"b": [
{
"c": 1
}
]
},
{
"b": [
{
"c": 2
}
]
}
]
}
ブラウザでTOMLを試せるやつ |
革新案がない限り以下の書き方にしようと思っている。 [[ShinobiGami]]
input = "s2d6"
output = "(2D6) > 5"
secret = true
rands = [
[1, 6],
[4, 6],
] |
inline tableというのもあるらしい [[ShinobiGami]]
input = "s2d6"
output = "(2D6) > 5"
secret = true
rands = [
{ sides = 6, value = 1 },
{ sides = 6, value = 4 },
] |
テストデータを扱いやすくするために、対象ゲームシステムはKeyにしない方がいいかもしれない [[test]]
game_system = "ShinobiGami"
input = "s2d6"
output = "(2D6) > 5"
secret = true
rands = [
{ sides = 6, value = 1 },
{ sides = 6, value = 4 },
] |
https://discordapp.com/channels/597133335243784192/641274151780483092/753636176979820654
|
要検討事項は以下の二点
お試し版は最も安定している以下の形式にする。9月中くらいにはいったん以下フォーマットで全データをTOML化してみる。 [[test]]
game_system = "ShinobiGami"
input = "s2d6"
output = "(2D6) > 5"
secret = true
rands = [
{ sides = 6, value = 1 },
{ sides = 6, value = 4 },
] |
TOML化した ea9d8e6 |
Ver2ではテストデータは独自フォーマットで記述されているが、bcdice-jsなどの他言語のプロジェクトから利用する観点から好ましくないので、普及しているファイルフォーマットで記述したい。
Ver3からはTOMLを作用する
例
ShinobiGami.toml
上記をJSONで表すと以下のようになる
懸念点や検討された他の案
Ref.
The text was updated successfully, but these errors were encountered: