abap34 / ACL.jl

AtCoder Library(ACL)のJulia移植版です
Creative Commons Zero v1.0 Universal
8 stars 3 forks source link

テストの作成 #18

Open abap34 opened 4 years ago

abap34 commented 4 years ago

現状テストの枠組みがないです、有志プロジェクトとはいえバグはなるべく排除したいので、早急に取り組む必要があります...

likein12 commented 4 years ago

一つの案としては、ACLのコーディングを手掛けたのはyosupoさんらしいので、yosupoさんが運営しているlibraryテストシステム、yosupo judge (https://judge.yosupo.jp/ )がかなり参考になると考えています(ちょっと見た感じでもconvolution, BIT, UnionFind, SegmentTree, FloorSumなどのチェックができることがわかる)。現在のyosupo judgeのサイトでは残念ながらまだJuliaを使用することができませんが、https://hotman78.hatenablog.com/entry/2020/06/18/085018 によれば各チェッカーで使われているテストケースの入力と出力のペアが入手可能で、これを利用すれば比較的簡便にテストできると思います。 すなわち、yosupo judgeより入手したinputを処理してoutputと一致するかどうかを手元で確認することで、一応のライブラリの検証とするというのが方法の一つとして考えられると思います。

abap34 commented 4 years ago

ありがとうございます! yosupo judgeに限らずAtCoderの問題、それこそ次のACL Contestのジャッジも利用できそうですね。

likein12 commented 4 years ago

ひとまずの方針としては

① yosupo judge ② AtCoderでtestに使えそうな問題を集めてくる(ACL practice, ACL contestなどが効率がよさそう)

という感じがよさそうですね。 一応、AOJに関してもjuliaでできるようにテストケースを取ってきている先達の試みがあるので、これを参考にしてさらにAOJでのvalidationもできそうです。 https://goropikari.hatenablog.com/entry/julia_aoj

ただ、もちろん手元テストには測定される実行時間がAtCoder judgeと乖離するという短所もあるので、各々が使うマシンとAtCoder judgeの実行時間のおおまかな対応関係を調べておくのも重要そうです。

likein12 commented 4 years ago

yosupo judgeのテストセットからライブラリを自動検証するコードが書けたので、近いうちに組み入れたものをPRしようと思います。

p1scescom commented 4 years ago

それでは自動検証が導入されるまで,テストなしでコードだけ追加して Draft PR 出していきます