Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions golang-basic/latihan/01-arius-galileo.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package main

import "fmt"

// polindrone
func polindrone(x string) bool {
var perbedaanHuruf byte
perbedaanHuruf = 0
var hasilAkhir bool
for i := 0; i < len(x) && perbedaanHuruf == 0; i++ {
perbedaanHuruf = x[i] - x[len(x)-i-1]
if perbedaanHuruf == 0 {
hasilAkhir = true
} else {
hasilAkhir = false
}
}
return hasilAkhir
}

func main() {
var inputKata string
fmt.Scan(&inputKata)
fmt.Println(polindrone(inputKata))
}
42 changes: 42 additions & 0 deletions golang-basic/latihan/01-arius-galileo_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package main

import "testing"

func Test_polindrone(t *testing.T) {
type args struct {
x string
}
tests := []struct {
name string
args args
want bool
}{
{
name: "Test polindrome true",
args: args{
x: "madam",
},
want: true,
},
{
name: "Test polindrome true",
args: args{
x: "kaka",
},
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := polindrone(tt.args.x); got != tt.want {
t.Errorf("polindrone() = %v, want %v", got, tt.want)
}
})
}
}

func BenchmarkPolindrome(b *testing.B) {
for i := 0; i < b.N; i++ {
polindrone("madam")
}
}
43 changes: 43 additions & 0 deletions golang-basic/latihan/02-arius-galileo.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package main

import (
"fmt"
"strings"
)

//konsonan

func vokalDetection(x string) string {
var hurufVokal = [5]string{"a", "i", "u", "e", "o"}
var huruf = []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
var isHuruf bool
var jawaban string
jawaban = "Konsonan"
x = strings.ToLower(x)
if len(x) == 1 {
for i := 0; i < len(huruf); i++ {
if huruf[i] == x {
isHuruf = true
}
}
if isHuruf {
for i := 0; i < len(hurufVokal); i++ {
if hurufVokal[i] == x {
jawaban = "Vokal"
}
}
} else {
jawaban = "Inputan Bukan Huruf, Tolng Input Huruf"
}
} else {
jawaban = "Tolong input 1 karakter saja"
}

return jawaban
}

func main() {
var inputHuruf string
fmt.Scan(&inputHuruf)
fmt.Println(vokalDetection(inputHuruf))
}
70 changes: 70 additions & 0 deletions golang-basic/latihan/02-arius-galileo_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package main

import "testing"

func Test_vokalDetection(t *testing.T) {
type args struct {
x string
}
tests := []struct {
name string
args args
want string
}{
{
name: "Test lebih dari 1 karakter",
args: args{
x: "ac",
},
want: "Tolong input 1 karakter saja",
},
{
name: "Test bukan menggunakan huruf",
args: args{
x: "1",
},
want: "Inputan Bukan Huruf, Tolng Input Huruf",
},
{
name: "Test menggunakan konsonan",
args: args{
x: "g",
},
want: "Konsonan",
},
{
name: "Test menggunakan Vokal",
args: args{
x: "a",
},
want: "Vokal",
},
{
name: "Test menggunakan vokal tapi huruf besar",
args: args{
x: "A",
},
want: "Vokal",
},
{
name: "Test menggunakan Konsonan tapi huruf besar",
args: args{
x: "G",
},
want: "Konsonan",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := vokalDetection(tt.args.x); got != tt.want {
t.Errorf("vokalDetection() = %v, want %v", got, tt.want)
}
})
}
}

func BenchmarkVokalDetection(b *testing.B) {
for i := 0; i < b.N; i++ {
vokalDetection("x")
}
}
2 changes: 2 additions & 0 deletions gomodule-unit-test/latihan/latihan-moq/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ type Student struct {
Class int `json:"class"`
}

//go:generate moq -out main_mock_test.go . StudentRepositoryInterface

type StudentRepositoryInterface interface {
GetAllStudents() ([]Student, error)
}
Expand Down
67 changes: 67 additions & 0 deletions gomodule-unit-test/latihan/latihan-moq/main_mock_test.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 62 additions & 0 deletions gomodule-unit-test/latihan/latihan-moq/main_test.go
Original file line number Diff line number Diff line change
@@ -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: "sukses",
s: StudentService{
StudentRepositoryInterface: &StudentRepositoryInterfaceMock{
GetAllStudentsFunc: func() ([]Student, error) {
return []Student{
{
FullName: "Ihsan Arief",
Grade: "B",
Class: 1,
},
{
FullName: "Tono",
Grade: "A",
Class: 2,
},
}, nil
},
},
},
wantErr: false,
want: []Student{
{
FullName: "Ihsan Arief",
Grade: "B",
Class: 1,
},
{
FullName: "Tono",
Grade: "A",
Class: 2,
},
},
},
}
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)
}
})
}
}