読者です 読者をやめる 読者になる 読者になる

TDDBC仙台の贈呈品振分けコードをGroovy+Spockで書いてみた

TDD Groovy

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
  }
}

これはひどい
このコードを修正するという今後のブログネタができてしまった。
良い子の皆はこんなコードを書いちゃだめですよ!