File tree Expand file tree Collapse file tree 7 files changed +24
-43
lines changed Expand file tree Collapse file tree 7 files changed +24
-43
lines changed Original file line number Diff line number Diff line change 1
1
# 課題1
2
2
3
- ## 次の仕様を満たすコマンドを作って下さい
3
+ ## io.Readerとio.Writerについて調べてみよう
4
4
5
- - [x] ディレクトリを指定する
6
- - [x] 指定したディレクトリ以下のJPGファイルをPNGに変換 (デフォルト)
7
- - [x] ディレクトリ以下は再帰的に処理する
8
- - [ ] 変換前と変換後の画像形式を指定できる (オプション)
5
+ - 標準パッケージでどのように使われているか
6
+ - io.Readerとio.Writerがあることでどういう利点があるのか具体例を挙げて考えてみる
9
7
10
- ## 以下を満たすように開発してください
8
+ ### 標準パッケージで使われているところ
11
9
12
- - [x] mainパッケージと分離する
13
- - [x] 自作パッケージと標準パッケージと準標準パッケージのみ使う
14
- - [x] 準標準パッケージ:golang.org/x以下のパッケージ
15
- - [x] ユーザ定義型を作ってみる
16
- - [ ] GoDocを生成してみる
10
+ ### 利点
11
+
12
+
13
+ ## 1回目の宿題のテストを作ってみて下さい
14
+
15
+ - テストのしやすさを考えてリファクタリングしてみる
16
+ - テストのカバレッジを取ってみる
17
+ - テーブル駆動テストを行う
18
+ - テストヘルパーを作ってみる
17
19
18
20
## 使い方
19
21
20
- ``` :go
21
- go build -o kadai1
22
- ./kadai1 INPUT_DIR -input-ext [input extension(.jpg/.png)] -output-dir [output directory] -output-ext [output extension(.jpg/.png)]
23
- ```
24
-
25
- - ` -output-dir ` は指定されない場合、` INPUT_DIR ` に出力される。
26
- - 出力ディレクトリには、` INPUT_DIR ` の各処理ファイルと同じディレクトリ構造を保った形で出力される。
27
-
28
- ## ハマったところ
29
-
30
- - os.FileInfoをスライスにappendして返したらヌルポになった。
31
- - ポインタで渡そうにもinterfaceだし、どうやって渡す?
32
- - ひとまずファイルパスだけ返してごまかした。
33
- - go testが最初うまく走らなかった。
34
- - modファイルができてから動くようになった?
35
- - ` INPUT_DIRECTORY ` を` -output-dir ` のデフォルト値に取りたかった関係で、` INPUT_DIRECTORY ` を第一引数に取る形にした。
36
- - よく考えると` -help ` などするとき変なことになる...
37
- - cliのテストをするために結構無駄な構造を作る羽目になってしまった。
38
- - テストはgolang.org/x以下じゃなくてもセーフという解釈で、gomock使っている。
39
- - コンストラクタでmockに入れ替える以外でスタブを差し込む方法がわからなかった。
40
- - DIコンテナとか、あまり一般的ではない?
41
- - 上から差し込むためにFactoryクラスを作ったが、実装上あまり意味がない構造をテストのために作ってしまい、ちょっと気持ち悪い。
42
- - package自体のinterfaceってないのだろうか。
43
- - GoDocの生成というのがよくわからなかった。masterにマージされればできる?
44
- - go.modとかgo.sumとかなんとなくバージョン管理のためのものなのだと思うがよくわかっていない。
22
+
23
+
24
+ ## kadai1からの変更点
25
+
26
+
Original file line number Diff line number Diff line change 5
5
"path/filepath"
6
6
"strings"
7
7
8
- "github.com/gopherdojo/dojo6/kadai1 /en-ken/imgcnv"
8
+ "github.com/gopherdojo/dojo6/kadai2 /en-ken/imgcnv"
9
9
)
10
10
11
11
// CLI is for DI
Original file line number Diff line number Diff line change 6
6
"testing"
7
7
8
8
"github.com/golang/mock/gomock"
9
- "github.com/gopherdojo/dojo6/kadai1 /en-ken/mock_imgcnv"
9
+ "github.com/gopherdojo/dojo6/kadai2 /en-ken/mock_imgcnv"
10
10
)
11
11
12
12
func TestExecuteSuccess (t * testing.T ) {
Original file line number Diff line number Diff line change 1
- module github.com/gopherdojo/dojo6/kadai1 /en-ken
1
+ module github.com/gopherdojo/dojo6/kadai2 /en-ken
2
2
3
3
go 1.12
4
4
Original file line number Diff line number Diff line change 1
- github.com/golang/image v0.0.0-20190703141733-d6a02ce849c9 h1:ijbHThKv+QPsGeQnJ0/DiSrRLBR2QlQtRVcl1u2JhR8 =
2
1
github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s =
3
2
github.com/golang/mock v1.3.1 /go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y =
3
+ github.com/gopherdojo/dojo6 v0.0.0-20190710155631-1b40d3406c2f h1:UOg/ZpRwvokKADOjfCukjqQXYHb7HOdVSgZGABZc2BQ =
4
4
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 /go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w =
5
5
golang.org/x/net v0.0.0-20190311183353-d8887717615a /go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg =
6
6
golang.org/x/sync v0.0.0-20190423024810-112230192c58 /go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM =
7
7
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a /go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY =
8
8
golang.org/x/text v0.3.0 /go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ =
9
- golang.org/x/tools v0.0.0-20190425150028-36563e24a262 h1:qsl9y/CJx34tuA7QCPNp86JNJe4spst6Ff8MjvPUdPg =
10
9
golang.org/x/tools v0.0.0-20190425150028-36563e24a262 /go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q =
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ package main
3
3
import (
4
4
"os"
5
5
6
- "github.com/gopherdojo/dojo6/kadai1 /en-ken/imgcnv"
6
+ "github.com/gopherdojo/dojo6/kadai2 /en-ken/imgcnv"
7
7
)
8
8
9
9
func main () {
You can’t perform that action at this time.
0 commit comments