Skip to content

Instantly share code, notes, and snippets.

@kyonmm
kyonmm / VendingSpec.groovy
Created June 24, 2012 08:36
Cafe.Spockでの演習
import spock.lang.Specification
import spock.lang.Unroll
/**
* Created by IntelliJ IDEA.
* User: kyon
* Date: 12/06/24
* Time: 14:53
* To change this template use File | Settings | File Templates.
*/
class VendingSpec extends Specification {
/*
Copyright (C) 2011 Yusuke Yamamoto
Licensed under the Apache License, Version 2.0 (the "License");
http://www.apache.org/licenses/LICENSE-2.0
*/
import org.quartz.*
import org.quartz.impl.StdSchedulerFactory
import twitter4j.TwitterFactory
class UpdateProfileImageTask {

はじめに

ここに書かれているのは、「主目的」であって、プログラマーもしくはテストエンジニアが「他のことを考慮していない」という意味ではありません。あと、僕の解釈なので一般論というわけではないないです。

プログラマー:「テストを書く」

プログラマーは基本的に「テストを書く」というと思います。実際に書いているんですけど。これ、手動テストしかなかった時代は、どうやって言っていたのかわかりませんけど、これは非常に的を得ていると思うのです。プログラマーの主眼は「要求を設計し実装すること」にあります。そしてその意志はプロダクトコードとなって表現されます。そう、プロダクトコードというのは、表現手段なんです。なので、彼らにとってテストコードというのはあくまで「要求を設計し実装すること」のある表現手段であり、それがプロダクトコード以外であるということにすぎないのではないでしょうか。

プログラマーはあふれるその思いをコードに表現する事が楽しみです。主目的である「要求を設計し実装すること」をテストというフィールドにおいて実施するというのは若干の矛盾をはらんでいて、やっていることは、「要求を設計し実装すること」をしながら確認がとれるものとして、テストコードという手段をとった。くらいのイメージです。

//Pict.groovyがClassPathにある前提で次のスクリプトを実行する
//pict.exeはPict.pictPathに設定する
//エラーが起きたときについて検知していない。
//水準に「,」が入っているときは@escapeComma@でエスケープしている。@escapeComma@が水準にあるときは、escapeComma の値を変えてください。
//水準に「\n」が入っているときは@escapeLineSeparator@でエスケープしている。@escapeLineSeparator@が水準にあるときは、escapeLineSeparator の値を変えてください。
class Pict{
def static pictPath = $/D:\Apps\PICT\pict.exe/$
apply plugin : "groovy"
apply plugin : "idea"
defaultTasks : idea
repositories{
mavaenCentral()
}
dependencies{
new groovy.swing.SwingBuilder().edt { optionPane().showMessageDialog(null, "Hello World!") }
/**
パラメータの列挙と制約を書けば、組み合わせをするライブラリ書いた。
したみたいな感じで使います。
一番下のcombination(parameter, constraints)ってするとテストケースが入ったMapが返ってくる感じです。
今は全組み合わせから制約を抜いてくるだけなのですが、k-wayの導入をして、
combination(parameter, constraints, order)ってして組み合わせるようにすればすごくテストが効率化できる感じ。
**/
@kyonmm
kyonmm / init.el
Created April 22, 2013 01:42
required skk 他はM-x list-packageで導入する。
(when (eq window-system 'mac)
(add-hook 'window-setup-hook
(lambda ()
;; (setq mac-autohide-menubar-on-maximize t)
(set-frame-parameter nil 'fullscreen 'fullboth)
)))
(defun mac-toggle-max-window ()
(interactive)
@kyonmm
kyonmm / fsLineCounter.groovy
Created May 31, 2013 04:40
F# のコメントと空白行を除いた行数を出力します。ざっくり実装です。起動引数にディレクトリを指定すると、配下のフォルダ全てのfsファイルを対象に行数を出力します。
import groovy.io.FileType
def multiLineComment = false
new File(args[0])
.eachFileRecurse(FileType.FILES){
if(it.name.endsWith("fs") == false) { return }
println it.name + "\t" + it.grep{it.trim().startsWith("//") == false}
.grep{
if(it.trim().contains("(*")){
multiLineComment = true
@kyonmm
kyonmm / TDDeXchange-exercise-for-tdder.md
Last active December 7, 2022 05:21
TDD演習課題 - TODOリストアプリ