From 84bd201f8a349dbc79d8ac4e7ac853d9d2ee51ae Mon Sep 17 00:00:00 2001 From: matsumatsu20 Date: Wed, 12 Sep 2018 02:43:45 +0900 Subject: [PATCH 1/7] Impl omikuji without test --- kadai4/matsumatsu20/.gitignore | 95 ++++++++++++++++++++++++++++++++++ kadai4/matsumatsu20/Makefile | 15 ++++++ kadai4/matsumatsu20/README.md | 16 ++++++ kadai4/matsumatsu20/main.go | 93 +++++++++++++++++++++++++++++++++ 4 files changed, 219 insertions(+) create mode 100644 kadai4/matsumatsu20/.gitignore create mode 100644 kadai4/matsumatsu20/Makefile create mode 100644 kadai4/matsumatsu20/README.md create mode 100644 kadai4/matsumatsu20/main.go diff --git a/kadai4/matsumatsu20/.gitignore b/kadai4/matsumatsu20/.gitignore new file mode 100644 index 0000000..cecdcf0 --- /dev/null +++ b/kadai4/matsumatsu20/.gitignore @@ -0,0 +1,95 @@ +# Created by https://www.gitignore.io/api/go,intellij+all + +### Go ### +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib +matsuda + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +### Go Patch ### +/vendor/ +/Godeps/ + +### Intellij+all ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +### Intellij+all Patch ### +# Ignores the whole .idea folder and all .iml files +# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 +.idea/ + +# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 +*.iml +modules.xml +.idea/misc.xml +*.ipr + +# End of https://www.gitignore.io/api/go,intellij+all \ No newline at end of file diff --git a/kadai4/matsumatsu20/Makefile b/kadai4/matsumatsu20/Makefile new file mode 100644 index 0000000..8d260bc --- /dev/null +++ b/kadai4/matsumatsu20/Makefile @@ -0,0 +1,15 @@ +# Go パラメータ +GOCMD=go +GOBUILD=$(GOCMD) build +GOCLEAN=$(GOCMD) clean +GOTEST=$(GOCMD) test +BINARY_NAME=matsukuji + all: test build +build: + $(GOBUILD) -o $(BINARY_NAME) -v +test: + $(GOTEST) -v ./... +clean: + $(GOCLEAN) + rm -f $(BINARY_NAME) + rm -f $(BINARY_UNIX) diff --git a/kadai4/matsumatsu20/README.md b/kadai4/matsumatsu20/README.md new file mode 100644 index 0000000..00156fd --- /dev/null +++ b/kadai4/matsumatsu20/README.md @@ -0,0 +1,16 @@ +# おみくじAPIを作ってみよう + +## 課題事項 +- [ ] JSON形式でおみくじの結果を返す +- [ ] 正月(1/1-1/3)だけ大吉にする +- [ ] ハンドラのテストを書いてみる + +## Usage +### build +```bash +% make build +``` + ### run +```bash +% ./matsukuji +``` \ No newline at end of file diff --git a/kadai4/matsumatsu20/main.go b/kadai4/matsumatsu20/main.go new file mode 100644 index 0000000..a36cd09 --- /dev/null +++ b/kadai4/matsumatsu20/main.go @@ -0,0 +1,93 @@ +package main + +import ( + "flag" + "net/http" + "math/rand" + "time" + "encoding/json" + "log" +) + +var ( + port = flag.String("p", "8080", "resten port") + + luck = map[int]string{ + 0: "大吉", + 1: "吉", + 2: "中吉", + 3: "小吉", + 4: "末吉", + 5: "凶", + 6: "大凶", + } + +) + +type Response struct { + Status int `json:"status"` + Result string `json:"result"` +} + +type Holiday struct { + Month time.Month + Day int +} + +type Holidays struct { + Days []Holiday +} + +func main() { + http.HandleFunc("/kuji", omikuji) + + http.ListenAndServe(":" + *port, nil) +} + +func omikuji(w http.ResponseWriter, r *http.Request) { + rand.Seed(time.Now().UnixNano()) + + i := rand.Intn(len(luck)) + + // TODO: マジックナンバーを消したい + if isNewYearsHolidays() { + i = 0 + } + + res := &Response{Status: 200, Result: luck[i]} + + encoder := json.NewEncoder(w) + if err := encoder.Encode(res); err != nil {log.Fatal(err)} +} + +func isNewYearsHolidays() bool { + newYearsHolidays := Holidays{ + []Holiday{ + {time.Month(1), 1}, + {time.Month(1), 2}, + {time.Month(1), 3}, + }, + } + + jst, err := time.LoadLocation("Asia/Tokyo") + if err != nil { + log.Println(err) + } + if newYearsHolidays.include(time.Now().In(jst)) { + return true + } + + return false +} + +func (h *Holidays) include(date time.Time) bool { + _, month, day := date.Date() + + for _, holiday := range h.Days { + if holiday.Month.String() == month.String() && holiday.Day == day { + return true + } + } + + return true +} From db06ebb74c392e3a7a2f5f5c56c30fd2505e4d4c Mon Sep 17 00:00:00 2001 From: matsumatsu20 Date: Mon, 17 Sep 2018 14:20:53 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=E4=B8=89=E3=81=8C=E6=97=A5=E3=81=AE?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E3=83=AD=E3=82=B8=E3=83=83=E3=82=AF=E3=82=92?= =?UTF-8?q?=E5=88=87=E3=82=8A=E5=87=BA=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kadai4/matsumatsu20/dateUtil/dateUtil.go | 20 +++++++++++ kadai4/matsumatsu20/main.go | 46 ++---------------------- 2 files changed, 23 insertions(+), 43 deletions(-) create mode 100644 kadai4/matsumatsu20/dateUtil/dateUtil.go diff --git a/kadai4/matsumatsu20/dateUtil/dateUtil.go b/kadai4/matsumatsu20/dateUtil/dateUtil.go new file mode 100644 index 0000000..f8c630f --- /dev/null +++ b/kadai4/matsumatsu20/dateUtil/dateUtil.go @@ -0,0 +1,20 @@ +package dateUtil + +import ( + "time" + "log" +) + +func IsNewYearsHoliday() bool { + jst, err := time.LoadLocation("Asia/Tokyo") + if err != nil { + log.Println(err) + } + + _, month, day := time.Now().In(jst).Date() + if month == time.January && (day == 1 || day == 2 || day == 3) { + return true + } + + return false +} \ No newline at end of file diff --git a/kadai4/matsumatsu20/main.go b/kadai4/matsumatsu20/main.go index a36cd09..af6c22c 100644 --- a/kadai4/matsumatsu20/main.go +++ b/kadai4/matsumatsu20/main.go @@ -7,6 +7,7 @@ import ( "time" "encoding/json" "log" + "github.com/gopherdojo/dojo3/kadai4/matsumatsu20/dateUtil" ) var ( @@ -29,15 +30,6 @@ type Response struct { Result string `json:"result"` } -type Holiday struct { - Month time.Month - Day int -} - -type Holidays struct { - Days []Holiday -} - func main() { http.HandleFunc("/kuji", omikuji) @@ -50,7 +42,7 @@ func omikuji(w http.ResponseWriter, r *http.Request) { i := rand.Intn(len(luck)) // TODO: マジックナンバーを消したい - if isNewYearsHolidays() { + if dateUtil.IsNewYearsHoliday() { i = 0 } @@ -58,36 +50,4 @@ func omikuji(w http.ResponseWriter, r *http.Request) { encoder := json.NewEncoder(w) if err := encoder.Encode(res); err != nil {log.Fatal(err)} -} - -func isNewYearsHolidays() bool { - newYearsHolidays := Holidays{ - []Holiday{ - {time.Month(1), 1}, - {time.Month(1), 2}, - {time.Month(1), 3}, - }, - } - - jst, err := time.LoadLocation("Asia/Tokyo") - if err != nil { - log.Println(err) - } - if newYearsHolidays.include(time.Now().In(jst)) { - return true - } - - return false -} - -func (h *Holidays) include(date time.Time) bool { - _, month, day := date.Date() - - for _, holiday := range h.Days { - if holiday.Month.String() == month.String() && holiday.Day == day { - return true - } - } - - return true -} +} \ No newline at end of file From 5d520f46451a3d7e3eb700480ad9daf62ca8ad48 Mon Sep 17 00:00:00 2001 From: matsumatsu20 Date: Mon, 17 Sep 2018 14:26:48 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=E3=81=8F=E3=81=98=E3=81=AE=E7=A8=AE?= =?UTF-8?q?=E9=A1=9E=E3=81=AE=E5=AE=9A=E7=BE=A9=E3=82=92=E9=80=A3=E6=83=B3?= =?UTF-8?q?=E9=85=8D=E5=88=97=E3=81=8B=E3=82=89=E9=85=8D=E5=88=97=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kadai4/matsumatsu20/main.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/kadai4/matsumatsu20/main.go b/kadai4/matsumatsu20/main.go index af6c22c..997b758 100644 --- a/kadai4/matsumatsu20/main.go +++ b/kadai4/matsumatsu20/main.go @@ -13,14 +13,14 @@ import ( var ( port = flag.String("p", "8080", "resten port") - luck = map[int]string{ - 0: "大吉", - 1: "吉", - 2: "中吉", - 3: "小吉", - 4: "末吉", - 5: "凶", - 6: "大凶", + luck = []string{ + "大吉", + "吉", + "中吉", + "小吉", + "末吉", + "凶", + "大凶", } ) From 73601a6e8cec8c272fa6fdb51e9ce4c81b272229 Mon Sep 17 00:00:00 2001 From: matsumatsu20 Date: Mon, 17 Sep 2018 14:48:05 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kadai4/matsumatsu20/main.go | 44 ++----------------------- kadai4/matsumatsu20/omikuji/omikuji.go | 45 ++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 41 deletions(-) create mode 100644 kadai4/matsumatsu20/omikuji/omikuji.go diff --git a/kadai4/matsumatsu20/main.go b/kadai4/matsumatsu20/main.go index 997b758..463bc5f 100644 --- a/kadai4/matsumatsu20/main.go +++ b/kadai4/matsumatsu20/main.go @@ -3,51 +3,13 @@ package main import ( "flag" "net/http" - "math/rand" - "time" - "encoding/json" - "log" - "github.com/gopherdojo/dojo3/kadai4/matsumatsu20/dateUtil" + "github.com/gopherdojo/dojo3/kadai4/matsumatsu20/omikuji" ) -var ( - port = flag.String("p", "8080", "resten port") - - luck = []string{ - "大吉", - "吉", - "中吉", - "小吉", - "末吉", - "凶", - "大凶", - } - -) - -type Response struct { - Status int `json:"status"` - Result string `json:"result"` -} +var port = flag.String("p", "8080", "listen port") func main() { - http.HandleFunc("/kuji", omikuji) + http.HandleFunc("/kuji", omikuji.Handler) http.ListenAndServe(":" + *port, nil) -} - -func omikuji(w http.ResponseWriter, r *http.Request) { - rand.Seed(time.Now().UnixNano()) - - i := rand.Intn(len(luck)) - - // TODO: マジックナンバーを消したい - if dateUtil.IsNewYearsHoliday() { - i = 0 - } - - res := &Response{Status: 200, Result: luck[i]} - - encoder := json.NewEncoder(w) - if err := encoder.Encode(res); err != nil {log.Fatal(err)} } \ No newline at end of file diff --git a/kadai4/matsumatsu20/omikuji/omikuji.go b/kadai4/matsumatsu20/omikuji/omikuji.go new file mode 100644 index 0000000..69d5cd4 --- /dev/null +++ b/kadai4/matsumatsu20/omikuji/omikuji.go @@ -0,0 +1,45 @@ +package omikuji + +import ( + "net/http" + "math/rand" + "time" + "github.com/gopherdojo/dojo3/kadai4/matsumatsu20/dateUtil" + "encoding/json" + "log" +) + +type response struct { + Status int `json:"status"` + Result string `json:"result"` +} + +const ( + daikichi = "大吉" + kichi = "吉" + chukichi = "中吉" + shokichi = "小吉" + suekichi = "末吉" + kyo = "凶" + daikyo = "大凶" +) + +var luck = []string{daikichi, kichi, chukichi, shokichi, suekichi, kyo, daikyo} + +func Handler(w http.ResponseWriter, r *http.Request) { + var result string + + if dateUtil.IsNewYearsHoliday() { + result = daikichi + } else { + rand.Seed(time.Now().UnixNano()) + result = luck[rand.Intn(len(luck))] + } + + res := &response{Status: 200, Result: result} + + encoder := json.NewEncoder(w) + if err := encoder.Encode(res); err != nil { + log.Fatal(err) + } +} \ No newline at end of file From fba9c7c2b69d71e103fe6dddef839b8580f6ecdb Mon Sep 17 00:00:00 2001 From: matsumatsu20 Date: Mon, 17 Sep 2018 17:56:18 +0900 Subject: [PATCH 5/7] =?UTF-8?q?Unit=E3=83=86=E3=82=B9=E3=83=88=E3=82=92?= =?UTF-8?q?=E6=9B=B8=E3=81=84=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kadai4/matsumatsu20/dateUtil/dateUtil.go | 4 +- kadai4/matsumatsu20/dateUtil/dateUtil_test.go | 36 ++++++++++++ kadai4/matsumatsu20/omikuji/omikuji.go | 15 ++++- kadai4/matsumatsu20/omikuji/omikuji_test.go | 56 +++++++++++++++++++ 4 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 kadai4/matsumatsu20/dateUtil/dateUtil_test.go create mode 100644 kadai4/matsumatsu20/omikuji/omikuji_test.go diff --git a/kadai4/matsumatsu20/dateUtil/dateUtil.go b/kadai4/matsumatsu20/dateUtil/dateUtil.go index f8c630f..5a9e496 100644 --- a/kadai4/matsumatsu20/dateUtil/dateUtil.go +++ b/kadai4/matsumatsu20/dateUtil/dateUtil.go @@ -5,13 +5,15 @@ import ( "log" ) +var timeNow = time.Now() + func IsNewYearsHoliday() bool { jst, err := time.LoadLocation("Asia/Tokyo") if err != nil { log.Println(err) } - _, month, day := time.Now().In(jst).Date() + _, month, day := timeNow.In(jst).Date() if month == time.January && (day == 1 || day == 2 || day == 3) { return true } diff --git a/kadai4/matsumatsu20/dateUtil/dateUtil_test.go b/kadai4/matsumatsu20/dateUtil/dateUtil_test.go new file mode 100644 index 0000000..1b3a8f6 --- /dev/null +++ b/kadai4/matsumatsu20/dateUtil/dateUtil_test.go @@ -0,0 +1,36 @@ +package dateUtil + +import ( + "testing" + "time" + "log" +) + +func TestIsNewYearsHoliday(t *testing.T) { + jst, err := time.LoadLocation("Asia/Tokyo") + if err != nil { + log.Println(err) + } + + cases := []struct{ + year int + month time.Month + day int + expected bool + }{ + {2018, 12, 31, false}, + {2019, 1, 1, true}, + {2019, 1, 2, true}, + {2019, 1, 3, true}, + {2019, 1, 4, false}, + } + + for _, c := range cases { + timeNow = time.Date(c.year, c.month, c.day, 0,0,0,0, jst) + actual := IsNewYearsHoliday() + + if actual != c.expected { + t.Errorf("%v is expected, but returned %v", c.expected, actual) + } + } +} diff --git a/kadai4/matsumatsu20/omikuji/omikuji.go b/kadai4/matsumatsu20/omikuji/omikuji.go index 69d5cd4..0fa1542 100644 --- a/kadai4/matsumatsu20/omikuji/omikuji.go +++ b/kadai4/matsumatsu20/omikuji/omikuji.go @@ -24,16 +24,20 @@ const ( daikyo = "大凶" ) -var luck = []string{daikichi, kichi, chukichi, shokichi, suekichi, kyo, daikyo} +var( + luck = []string{daikichi, kichi, chukichi, shokichi, suekichi, kyo, daikyo} + isNewYearsHolidayFunc = dateUtil.IsNewYearsHoliday + fetchKujiFunc = fetchKuji +) func Handler(w http.ResponseWriter, r *http.Request) { var result string - if dateUtil.IsNewYearsHoliday() { + if isNewYearsHolidayFunc() { result = daikichi } else { rand.Seed(time.Now().UnixNano()) - result = luck[rand.Intn(len(luck))] + result = fetchKujiFunc() } res := &response{Status: 200, Result: result} @@ -42,4 +46,9 @@ func Handler(w http.ResponseWriter, r *http.Request) { if err := encoder.Encode(res); err != nil { log.Fatal(err) } +} + +func fetchKuji() string { + rand.Seed(time.Now().UnixNano()) + return luck[rand.Intn(len(luck))] } \ No newline at end of file diff --git a/kadai4/matsumatsu20/omikuji/omikuji_test.go b/kadai4/matsumatsu20/omikuji/omikuji_test.go new file mode 100644 index 0000000..2cb61d6 --- /dev/null +++ b/kadai4/matsumatsu20/omikuji/omikuji_test.go @@ -0,0 +1,56 @@ +package omikuji + +import ( + "testing" + "net/http/httptest" + "net/http" + "io/ioutil" + "encoding/json" +) + +func TestHandler(t *testing.T) { + ts := httptest.NewServer(http.HandlerFunc(Handler)) + defer ts.Close() + + cases := []struct{ + luck string + isNewYearsHoliday bool + expected response + }{ + {daikichi, false, response{200, "大吉"}}, + {kyo, false, response{200, "凶"}}, + {shokichi, true, response{200, "大吉"}}, + } + + for _, c := range cases { + fetchKujiFunc = func() string { + return c.luck + } + isNewYearsHolidayFunc = func() bool { + return c.isNewYearsHoliday + } + + res, err := http.Get(ts.URL) + + if err != nil { + t.Fatal(err) + } + + body, err := ioutil.ReadAll(res.Body) + + if err != nil { + t.Fatal(err) + } + + if res.StatusCode != 200 { + t.Errorf("expedted status %v, but returned %v", c.expected, 200) + } + + var actual response + json.Unmarshal(body, &actual) + + if actual != c.expected { + t.Errorf("expedted %v, but returned %v", c.expected, actual) + } + } +} From 2336ecefca05b28031d1fbb7064065d5a5b4fac0 Mon Sep 17 00:00:00 2001 From: matsumatsu20 Date: Mon, 17 Sep 2018 17:56:49 +0900 Subject: [PATCH 6/7] :lipstick: --- kadai4/matsumatsu20/.gitignore | 2 +- kadai4/matsumatsu20/README.md | 6 +++--- kadai4/matsumatsu20/main.go | 5 ++++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/kadai4/matsumatsu20/.gitignore b/kadai4/matsumatsu20/.gitignore index cecdcf0..2dd3cba 100644 --- a/kadai4/matsumatsu20/.gitignore +++ b/kadai4/matsumatsu20/.gitignore @@ -7,7 +7,7 @@ *.dll *.so *.dylib -matsuda +matsukuji # Test binary, build with `go test -c` *.test diff --git a/kadai4/matsumatsu20/README.md b/kadai4/matsumatsu20/README.md index 00156fd..fe7b214 100644 --- a/kadai4/matsumatsu20/README.md +++ b/kadai4/matsumatsu20/README.md @@ -1,9 +1,9 @@ # おみくじAPIを作ってみよう ## 課題事項 -- [ ] JSON形式でおみくじの結果を返す -- [ ] 正月(1/1-1/3)だけ大吉にする -- [ ] ハンドラのテストを書いてみる +- [x] JSON形式でおみくじの結果を返す +- [x] 正月(1/1-1/3)だけ大吉にする +- [x] ハンドラのテストを書いてみる ## Usage ### build diff --git a/kadai4/matsumatsu20/main.go b/kadai4/matsumatsu20/main.go index 463bc5f..2cfc5b4 100644 --- a/kadai4/matsumatsu20/main.go +++ b/kadai4/matsumatsu20/main.go @@ -4,6 +4,7 @@ import ( "flag" "net/http" "github.com/gopherdojo/dojo3/kadai4/matsumatsu20/omikuji" + "log" ) var port = flag.String("p", "8080", "listen port") @@ -11,5 +12,7 @@ var port = flag.String("p", "8080", "listen port") func main() { http.HandleFunc("/kuji", omikuji.Handler) - http.ListenAndServe(":" + *port, nil) + if err := http.ListenAndServe(":" + *port, nil); err != nil { + log.Fatal("ListenAndServe: ", err) + } } \ No newline at end of file From 9740de68464dcbc6056694d299f01618b1fe91eb Mon Sep 17 00:00:00 2001 From: matsumatsu20 Date: Mon, 17 Sep 2018 22:53:36 +0900 Subject: [PATCH 7/7] go imports --- kadai4/matsumatsu20/dateUtil/dateUtil.go | 4 ++-- kadai4/matsumatsu20/dateUtil/dateUtil_test.go | 6 +++--- kadai4/matsumatsu20/main.go | 7 ++++--- kadai4/matsumatsu20/omikuji/omikuji.go | 11 ++++++----- kadai4/matsumatsu20/omikuji/omikuji_test.go | 12 ++++++------ 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/kadai4/matsumatsu20/dateUtil/dateUtil.go b/kadai4/matsumatsu20/dateUtil/dateUtil.go index 5a9e496..13c5590 100644 --- a/kadai4/matsumatsu20/dateUtil/dateUtil.go +++ b/kadai4/matsumatsu20/dateUtil/dateUtil.go @@ -1,8 +1,8 @@ package dateUtil import ( - "time" "log" + "time" ) var timeNow = time.Now() @@ -19,4 +19,4 @@ func IsNewYearsHoliday() bool { } return false -} \ No newline at end of file +} diff --git a/kadai4/matsumatsu20/dateUtil/dateUtil_test.go b/kadai4/matsumatsu20/dateUtil/dateUtil_test.go index 1b3a8f6..5c1c8cd 100644 --- a/kadai4/matsumatsu20/dateUtil/dateUtil_test.go +++ b/kadai4/matsumatsu20/dateUtil/dateUtil_test.go @@ -1,9 +1,9 @@ package dateUtil import ( + "log" "testing" "time" - "log" ) func TestIsNewYearsHoliday(t *testing.T) { @@ -12,7 +12,7 @@ func TestIsNewYearsHoliday(t *testing.T) { log.Println(err) } - cases := []struct{ + cases := []struct { year int month time.Month day int @@ -26,7 +26,7 @@ func TestIsNewYearsHoliday(t *testing.T) { } for _, c := range cases { - timeNow = time.Date(c.year, c.month, c.day, 0,0,0,0, jst) + timeNow = time.Date(c.year, c.month, c.day, 0, 0, 0, 0, jst) actual := IsNewYearsHoliday() if actual != c.expected { diff --git a/kadai4/matsumatsu20/main.go b/kadai4/matsumatsu20/main.go index 2cfc5b4..13efc7d 100644 --- a/kadai4/matsumatsu20/main.go +++ b/kadai4/matsumatsu20/main.go @@ -2,9 +2,10 @@ package main import ( "flag" + "log" "net/http" + "github.com/gopherdojo/dojo3/kadai4/matsumatsu20/omikuji" - "log" ) var port = flag.String("p", "8080", "listen port") @@ -12,7 +13,7 @@ var port = flag.String("p", "8080", "listen port") func main() { http.HandleFunc("/kuji", omikuji.Handler) - if err := http.ListenAndServe(":" + *port, nil); err != nil { + if err := http.ListenAndServe(":"+*port, nil); err != nil { log.Fatal("ListenAndServe: ", err) } -} \ No newline at end of file +} diff --git a/kadai4/matsumatsu20/omikuji/omikuji.go b/kadai4/matsumatsu20/omikuji/omikuji.go index 0fa1542..26bf6c9 100644 --- a/kadai4/matsumatsu20/omikuji/omikuji.go +++ b/kadai4/matsumatsu20/omikuji/omikuji.go @@ -1,12 +1,13 @@ package omikuji import ( - "net/http" + "encoding/json" + "log" "math/rand" + "net/http" "time" + "github.com/gopherdojo/dojo3/kadai4/matsumatsu20/dateUtil" - "encoding/json" - "log" ) type response struct { @@ -24,7 +25,7 @@ const ( daikyo = "大凶" ) -var( +var ( luck = []string{daikichi, kichi, chukichi, shokichi, suekichi, kyo, daikyo} isNewYearsHolidayFunc = dateUtil.IsNewYearsHoliday fetchKujiFunc = fetchKuji @@ -51,4 +52,4 @@ func Handler(w http.ResponseWriter, r *http.Request) { func fetchKuji() string { rand.Seed(time.Now().UnixNano()) return luck[rand.Intn(len(luck))] -} \ No newline at end of file +} diff --git a/kadai4/matsumatsu20/omikuji/omikuji_test.go b/kadai4/matsumatsu20/omikuji/omikuji_test.go index 2cb61d6..3c45894 100644 --- a/kadai4/matsumatsu20/omikuji/omikuji_test.go +++ b/kadai4/matsumatsu20/omikuji/omikuji_test.go @@ -1,18 +1,18 @@ package omikuji import ( - "testing" - "net/http/httptest" - "net/http" - "io/ioutil" "encoding/json" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" ) func TestHandler(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(Handler)) defer ts.Close() - cases := []struct{ + cases := []struct { luck string isNewYearsHoliday bool expected response @@ -36,7 +36,7 @@ func TestHandler(t *testing.T) { t.Fatal(err) } - body, err := ioutil.ReadAll(res.Body) + body, err := ioutil.ReadAll(res.Body) if err != nil { t.Fatal(err)