TDDBC仙台の贈呈品振分けコードをGroovy+Spockで書いてみた
Groovyに慣れていなかったのと時間がなかった影響で、結果的に残念な感じになってしまいましたが。
以下出来上がりコードを貼付けておきます。
TODO:GitHubにあげる
// テストコード import spock.lang.* class PresentSpecification extends Specification { def "プレゼントリストを渡すと組が返ってくる"() { expect: Present.select(present) == result where: present | result ["test"] | "0:test\n" ["test","tddbc"] | "0:test\n1:tddbc\n" } }
// 本体 class Present { public static void main(String[] args) { def group = ["JavaA","JavaB","JavaC","JavaD","JavaE","PHP","C#","Ruby"] def booklist = ["Being Geek", "97prog_ja", "DDD", "Art of Agile Development", "97prog_ja", "iPhone", "97soft_arc_ja", "Groovy"] Collections.shuffle(booklist) println(Present.change(group,Present.select(booklist))) } static def select(present) { def result = "" def index = 0 present.each { book -> result += """${index++}:${book}\n""" } result } static def change(list,data) { def result = data (0 .. 7).each { result = result.replace(it+":",list[it]+":") } result } }
これはひどい!
このコードを修正するという今後のブログネタができてしまった。
良い子の皆はこんなコードを書いちゃだめですよ!