From a8d29f117afa938c23033750d9c39a3d1adb6188 Mon Sep 17 00:00:00 2001 From: lowlovlox Date: Sun, 8 Jan 2023 17:57:57 +0700 Subject: [PATCH 1/5] Samatra Marwa Hany) ; --- golang-basic/latihan/01-samatra_marwa_hany.go | 26 +++++++++++++++++++ golang-basic/latihan/02-samatra_marwa_hany.go | 19 ++++++++++++++ golang-basic/latihan/test.go | 23 ++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 golang-basic/latihan/01-samatra_marwa_hany.go create mode 100644 golang-basic/latihan/02-samatra_marwa_hany.go diff --git a/golang-basic/latihan/01-samatra_marwa_hany.go b/golang-basic/latihan/01-samatra_marwa_hany.go new file mode 100644 index 0000000..fa12493 --- /dev/null +++ b/golang-basic/latihan/01-samatra_marwa_hany.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" + "strings" +) + +func main() { + + var inputString string + fmt.Print("Masukan kata: ") + fmt.Scanln(&inputString) + var reverseString string = "" + var length = len(inputString) + + for i := length - 1; i >= 0; i-- { + reverseString = reverseString + string(inputString[i]) + } + + // Case in-sensitive comparision + if strings.ToLower(inputString) == strings.ToLower(reverseString) { + fmt.Println("The given string is Palindrome") + } else { + fmt.Println("The given string is NOT a Palindrome") + } +} diff --git a/golang-basic/latihan/02-samatra_marwa_hany.go b/golang-basic/latihan/02-samatra_marwa_hany.go new file mode 100644 index 0000000..441993f --- /dev/null +++ b/golang-basic/latihan/02-samatra_marwa_hany.go @@ -0,0 +1,19 @@ +package main + +import "fmt" + +func main() { + var inputan string + fmt.Print("Masukan huruf: ") + fmt.Scanln(&inputan) + vokalkosnan(inputan) + +} + +func vokalkosnan(input string) { + if input == "a" || input == "i" || input == "u" || input == "e" || input == "o" { + println("huruf vokal") + } else { + fmt.Println("kosonan") + } +} diff --git a/golang-basic/latihan/test.go b/golang-basic/latihan/test.go index 06ab7d0..ea13372 100644 --- a/golang-basic/latihan/test.go +++ b/golang-basic/latihan/test.go @@ -1 +1,24 @@ package main + +import ( + "fmt" + "strings" +) + +func main() { + + var originalString string = "Madam" + var reverseString string = "" + var length = len(originalString) + + for i := length - 1; i >= 0; i-- { + reverseString = reverseString + string(originalString[i]) + } + + // Case in-sensitive comparision + if strings.ToLower(originalString) == strings.ToLower(reverseString) { + fmt.Println("The given string is Palindrome") + } else { + fmt.Println("The given string is NOT a Palindrome") + } +} From 55b2fddb3b16ea661ec6b0046fdb1ee5a9d9c9f9 Mon Sep 17 00:00:00 2001 From: lowlovlox Date: Sun, 8 Jan 2023 18:07:21 +0700 Subject: [PATCH 2/5] Samatra Marwa hany --- golang-basic/latihan/02-samatra_marwa_hany.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/golang-basic/latihan/02-samatra_marwa_hany.go b/golang-basic/latihan/02-samatra_marwa_hany.go index 441993f..2e36511 100644 --- a/golang-basic/latihan/02-samatra_marwa_hany.go +++ b/golang-basic/latihan/02-samatra_marwa_hany.go @@ -11,7 +11,7 @@ func main() { } func vokalkosnan(input string) { - if input == "a" || input == "i" || input == "u" || input == "e" || input == "o" { + if input == "a" || input == "i" || input == "u" || input == "e" || input == "o" || input == "A" || input == "I" || input == "U" || input == "E" || input == "O" { println("huruf vokal") } else { fmt.Println("kosonan") From 3ea059632d6c3eb61db9224b698927ed39fedf3b Mon Sep 17 00:00:00 2001 From: lowlovlox Date: Tue, 17 Jan 2023 11:21:39 +0700 Subject: [PATCH 3/5] unit test --- .../vokalkonsonan/02-samatra_marwa_hany.go | 22 +++++++ .../02-samatra_marwa_hany_test.go | 57 +++++++++++++++++++ golang-basic/latihan/vokalkonsonan/go.mod | 10 ++++ 3 files changed, 89 insertions(+) create mode 100644 golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany.go create mode 100644 golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany_test.go create mode 100644 golang-basic/latihan/vokalkonsonan/go.mod diff --git a/golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany.go b/golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany.go new file mode 100644 index 0000000..54c1856 --- /dev/null +++ b/golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany.go @@ -0,0 +1,22 @@ +package main + +import "fmt" + +func main() { + var inputan string + fmt.Print("Masukan huruf: ") + fmt.Scanln(&inputan) + fmt.Println(vokalkosnan(inputan)) + +} + +func vokalkosnan(input string) string { + var kembalian string = "" + if input == "a" || input == "i" || input == "u" || input == "e" || input == "o" || input == "A" || input == "I" || input == "U" || input == "E" || input == "O" { + kembalian = "vokal" + return kembalian + } else { + kembalian = "konsonan" + return kembalian + } +} diff --git a/golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany_test.go b/golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany_test.go new file mode 100644 index 0000000..2219c38 --- /dev/null +++ b/golang-basic/latihan/vokalkonsonan/02-samatra_marwa_hany_test.go @@ -0,0 +1,57 @@ +package main + +import "testing" + +func Test_vokalkosnan(t *testing.T) { + type args struct { + input string + } + tests := []struct { + name string + args args + want string + }{ + { + name: "vokal", + args: args{ + input: "a" + }, + want: "vokal", + }, + { + name: "should be consonant", + args: args{ + letter: "i", + }, + want: "consonant", + }, + { + name: "should be consonant", + args: args{ + letter: "u", + }, + want: "consonant", + }, + { + name: "should be consonant", + args: args{ + letter: "e", + }, + want: "consonant", + }, + { + name: "should be consonant", + args: args{ + letter: "o", + }, + want: "consonant", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := vokalkosnan(tt.args.input); got != tt.want { + t.Errorf("vokalkosnan() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/golang-basic/latihan/vokalkonsonan/go.mod b/golang-basic/latihan/vokalkonsonan/go.mod new file mode 100644 index 0000000..b94cfb2 --- /dev/null +++ b/golang-basic/latihan/vokalkonsonan/go.mod @@ -0,0 +1,10 @@ +module 02-samatra_marwa_hany.go + +go 1.19 + + +"gopls": { + "experimentalWorkspaceModule": true, +} + + From b7cc5fb8453ed25a353c5977bfb0ae62efea5a54 Mon Sep 17 00:00:00 2001 From: lowlovlox Date: Tue, 17 Jan 2023 11:22:47 +0700 Subject: [PATCH 4/5] unit test --- golang-basic/latihan/02-samatra_marwa_hany.go | 19 -------------- .../{ => palindrome}/01-samatra_marwa_hany.go | 25 +++++++++++-------- .../palindrome/01-samatra_marwa_hany_test.go | 25 +++++++++++++++++++ golang-basic/latihan/palindrome/go.mod | 6 +++++ 4 files changed, 46 insertions(+), 29 deletions(-) delete mode 100644 golang-basic/latihan/02-samatra_marwa_hany.go rename golang-basic/latihan/{ => palindrome}/01-samatra_marwa_hany.go (50%) create mode 100644 golang-basic/latihan/palindrome/01-samatra_marwa_hany_test.go create mode 100644 golang-basic/latihan/palindrome/go.mod diff --git a/golang-basic/latihan/02-samatra_marwa_hany.go b/golang-basic/latihan/02-samatra_marwa_hany.go deleted file mode 100644 index 2e36511..0000000 --- a/golang-basic/latihan/02-samatra_marwa_hany.go +++ /dev/null @@ -1,19 +0,0 @@ -package main - -import "fmt" - -func main() { - var inputan string - fmt.Print("Masukan huruf: ") - fmt.Scanln(&inputan) - vokalkosnan(inputan) - -} - -func vokalkosnan(input string) { - if input == "a" || input == "i" || input == "u" || input == "e" || input == "o" || input == "A" || input == "I" || input == "U" || input == "E" || input == "O" { - println("huruf vokal") - } else { - fmt.Println("kosonan") - } -} diff --git a/golang-basic/latihan/01-samatra_marwa_hany.go b/golang-basic/latihan/palindrome/01-samatra_marwa_hany.go similarity index 50% rename from golang-basic/latihan/01-samatra_marwa_hany.go rename to golang-basic/latihan/palindrome/01-samatra_marwa_hany.go index fa12493..98f8aba 100644 --- a/golang-basic/latihan/01-samatra_marwa_hany.go +++ b/golang-basic/latihan/palindrome/01-samatra_marwa_hany.go @@ -5,22 +5,27 @@ import ( "strings" ) -func main() { - - var inputString string - fmt.Print("Masukan kata: ") - fmt.Scanln(&inputString) +func palindrome(input string) string { var reverseString string = "" - var length = len(inputString) + var length = len(input) for i := length - 1; i >= 0; i-- { - reverseString = reverseString + string(inputString[i]) + reverseString = reverseString + string(input[i]) } // Case in-sensitive comparision - if strings.ToLower(inputString) == strings.ToLower(reverseString) { - fmt.Println("The given string is Palindrome") + if strings.ToLower(input) == strings.ToLower(reverseString) { + return "palindrome" } else { - fmt.Println("The given string is NOT a Palindrome") + return "not palindrome" } } + +func main() { + + var inputString string + fmt.Print("Masukan kata: ") + fmt.Scanln(&inputString) + palindrome(inputString) + +} diff --git a/golang-basic/latihan/palindrome/01-samatra_marwa_hany_test.go b/golang-basic/latihan/palindrome/01-samatra_marwa_hany_test.go new file mode 100644 index 0000000..c194486 --- /dev/null +++ b/golang-basic/latihan/palindrome/01-samatra_marwa_hany_test.go @@ -0,0 +1,25 @@ +package main + +import "testing" + +func Test_palindrome(t *testing.T) { + type args struct { + input string + } + tests := []struct { + name string + args args + }{ + { + name: "vokal", + args: args{ + input: "madam" + }, + want: "palindrome", + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + palindrome(tt.args.input) + }) + } +} diff --git a/golang-basic/latihan/palindrome/go.mod b/golang-basic/latihan/palindrome/go.mod new file mode 100644 index 0000000..1fb2cad --- /dev/null +++ b/golang-basic/latihan/palindrome/go.mod @@ -0,0 +1,6 @@ +module 01-samatra_marwa_hany.go + +go 1.19 +"gopls": { + "experimentalWorkspaceModule": true, +} \ No newline at end of file From 62bd625bc6f9f8c0b09e2c8a5e73c83d12cb9442 Mon Sep 17 00:00:00 2001 From: lowlovlox Date: Tue, 17 Jan 2023 12:28:10 +0700 Subject: [PATCH 5/5] moq --- gomodule-unit-test/latihan/latihan-moq/go.mod | 11 +++- gomodule-unit-test/latihan/latihan-moq/go.sum | 8 +++ .../latihan/latihan-moq/main.go | 1 + .../latihan/latihan-moq/main_test.go | 62 +++++++++++++++++++ 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 gomodule-unit-test/latihan/latihan-moq/go.sum create mode 100644 gomodule-unit-test/latihan/latihan-moq/main_test.go diff --git a/gomodule-unit-test/latihan/latihan-moq/go.mod b/gomodule-unit-test/latihan/latihan-moq/go.mod index 3aec68f..abdc303 100644 --- a/gomodule-unit-test/latihan/latihan-moq/go.mod +++ b/gomodule-unit-test/latihan/latihan-moq/go.mod @@ -1,3 +1,10 @@ -module github.com/santekno/latihanmoq +module latihan -go 1.17 +go 1.19 + +require ( + github.com/matryer/moq v0.3.0 // indirect + golang.org/x/mod v0.7.0 // indirect + golang.org/x/sys v0.2.0 // indirect + golang.org/x/tools v0.3.0 // indirect +) \ No newline at end of file diff --git a/gomodule-unit-test/latihan/latihan-moq/go.sum b/gomodule-unit-test/latihan/latihan-moq/go.sum new file mode 100644 index 0000000..976317f --- /dev/null +++ b/gomodule-unit-test/latihan/latihan-moq/go.sum @@ -0,0 +1,8 @@ +github.com/matryer/moq v0.3.0 h1:4j0goF/XK3pMTc7fJB3fveuTJoQNdavRX/78vlK3Xb4= +github.com/matryer/moq v0.3.0/go.mod h1:RJ75ZZZD71hejp39j4crZLsEDszGk6iH4v4YsWFKH4s= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/tools v0.3.0 h1:SrNbZl6ECOS1qFzgTdQfWXZM9XBkiA6tkFrH9YSTPHM= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= \ No newline at end of file diff --git a/gomodule-unit-test/latihan/latihan-moq/main.go b/gomodule-unit-test/latihan/latihan-moq/main.go index 0cbd3d4..c1dbfc1 100644 --- a/gomodule-unit-test/latihan/latihan-moq/main.go +++ b/gomodule-unit-test/latihan/latihan-moq/main.go @@ -2,6 +2,7 @@ package main import "fmt" +//go:generate moq -out myinterface_moq_test.go . StudentRepositoryInterface type Student struct { FullName string `json:"fullname"` Grade string `json:"grade"` diff --git a/gomodule-unit-test/latihan/latihan-moq/main_test.go b/gomodule-unit-test/latihan/latihan-moq/main_test.go new file mode 100644 index 0000000..ac270fd --- /dev/null +++ b/gomodule-unit-test/latihan/latihan-moq/main_test.go @@ -0,0 +1,62 @@ +package main + +import ( + "reflect" + "testing" +) + +func TestStudentService_GetStudent(t *testing.T) { + tests := []struct { + name string + s StudentService + want []Student + wantErr bool + }{ + { + name: "shoulbe success get student", + s: StudentService{ + StudentRepositoryInterface: &StudentRepositoryInterfaceMock{ + GetAllStudentsFunc: func() ([]Student, error) { + return []Student{ + { + FullName: "Irvan", + Grade: "A", + Class: 12, + }, + { + FullName: "Taufik", + Grade: "C", + Class: 11, + }, + }, nil + }, + }, + }, + wantErr: false, + want: []Student{ + { + FullName: "Irvan", + Grade: "A", + Class: 12, + }, + { + FullName: "Taufik", + Grade: "C", + Class: 11, + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := tt.s.GetStudent() + if (err != nil) != tt.wantErr { + t.Errorf("StudentService.GetStudent() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("StudentService.GetStudent() = %v, want %v", got, tt.want) + } + }) + } +}