Skip to content

Commit 160dee6

Browse files
authored
Tests (#51)
* refactor: pindahkan semua file test ke folder /test Perubahan ini memindahkan semua file test yang sebelumnya tersebar ke dalam satu folder /test untuk merapikan struktur proyek dan mempermudah pengelolaan. Tidak ada perubahan pada logika pengujian — hanya lokasi file dan jalur impor (jika perlu disesuaikan). Tujuan refactor ini: - Mengorganisir file test agar tidak bercampur dengan kode produksi - Mempermudah konfigurasi CI dan penemuan test otomatis - Mempersiapkan struktur proyek agar lebih scalable di masa depan Catatan: Pastikan skrip atau konfigurasi yang bergantung pada lokasi test sebelumnya juga diperbarui. * chore: menambahkan utility untuk test menambahkan beberapa fungsi untuk mempermudah unit test, misalnya assert,ok,equals * chore: menambahkan deskripsi fungsi dengan bahasa indonesia * chore(benchmark): ubah loop benchmark ke b.Loop (Go 1.22) Memperbarui fungsi benchmark dengan menggunakan b.Loop yang diperkenalkan di Go 1.22 sebagai pengganti idiom for i := 0; i < b.N; i++. Perubahan ini membuat kode lebih idiomatik, lebih mudah dibaca, dan mendukung fitur benchmark yang lebih modern. Tidak ada perubahan perilaku pada hasil benchmark.
1 parent 88240c6 commit 160dee6

File tree

18 files changed

+121
-39
lines changed

18 files changed

+121
-39
lines changed

.golangci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
run:
2-
go: 1.19
2+
go: 1.24.3
33
timeout: 10m
44
linters:
55
disable-all: true

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
EXCLUDE_FOLDER = "basic\|intermediate\|utilities"
2-
TEST_PACKAGE := $(shell go list ./... | grep -v $(EXCLUDE_FOLDER))
1+
# EXCLUDE_FOLDER = "basic\|intermediate\|utilities"
2+
# TEST_PACKAGE := $(shell go list ./... | grep -v $(EXCLUDE_FOLDER))
3+
TEST_PACKAGE := $(shell go list ./tests/...)
34

45
.DEFAULT_GOAL := test
56

math/prima/cek_prima.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@ package prima
33
// PembagianTrial memeriksa apakah sebuah bilangan dari n adalah
44
// bilangan prima
55
// Parameter:
6-
// n - bilangan bulat bertipe integer 64
6+
//
7+
// n - bilangan bulat bertipe integer 64
78
//
89
// Return:
10+
//
911
// bool - true jika n adalah bilangan prima, false jika tidak prima
1012
func PembagianTrial(n int64) bool {
1113
if n < 2 {
1214
return false
1315
}
14-
16+
1517
for i := int64(2); i < n; i++ {
16-
if n % i == 0 {
18+
if n%i == 0 {
1719
return false
1820
}
1921
}

math_implementation/armstrong/is_armstrong.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"strconv"
1212
)
1313

14-
func cekArmstrong(angka int) bool {
14+
func CekArmstrong(angka int) bool {
1515
var digit_kanan int
1616
var sum int = 0
1717
var tempNum int = angka

searching/interpolation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ package searching
1111
// Return:
1212
// - indeks pertama dari nilai yang cocok
1313
// - error jika tidak ditemukan atau kondisi input tidak valid
14-
func pencarianInterpolasi(sortedData []int, tebakan int) (int, error) {
14+
func PencarianInterpolasi(sortedData []int, tebakan int) (int, error) {
1515
// jika data kosong, langsung return error karena tidak ada data yang dicari
1616
if len(sortedData) == 0 {
1717
return -1, ErrorMessage

searching/linear_searching.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ package searching
1111
// Return:
1212
// - int: indeks pertama tempat query ditemukan
1313
// - error: jika query tidak ditemukan, maka throw error
14-
func linearSearching(array []int, query int) (int, error) {
14+
func LinearSearching(array []int, query int) (int, error) {
1515
// melakukan iterasi terhadap array menggunakan array
1616
// dimana `i` adalah indeks dan `item` adalah nilai pada posisi tersebut
1717
for i, item := range array {

searching/ternary_searching.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
// Return:
2424
// float64 - nilai maks dari f(x) dalam unterval [a, b]
2525
// error - error jika input tidak valid atau terjadi masalah selama eksekusi
26-
func ternaryMaxSearching(a, b, epsilon float64, f func(x float64) float64) (float64, error) {
26+
func TernaryMaxSearching(a, b, epsilon float64, f func(x float64) float64) (float64, error) {
2727
if a == math.Inf(-1) || b == math.Inf(1) {
2828
return -1, fmt.Errorf("interval harus memiliki angka float64")
2929
}
@@ -34,10 +34,10 @@ func ternaryMaxSearching(a, b, epsilon float64, f func(x float64) float64) (floa
3434
kiri := (2*a + b) / 3
3535
kanan := (a + 2*b) / 3
3636
if f(kiri) < f(kanan) {
37-
return ternaryMaxSearching(kiri, b, epsilon, f)
37+
return TernaryMaxSearching(kiri, b, epsilon, f)
3838
}
3939

40-
return ternaryMaxSearching(a, kanan, epsilon, f)
40+
return TernaryMaxSearching(a, kanan, epsilon, f)
4141
}
4242

4343
// ternaryMinSearching mencari nilai minimum lokal dari fungsi(x) dalam interval [a, b]
@@ -47,7 +47,7 @@ func ternaryMaxSearching(a, b, epsilon float64, f func(x float64) float64) (floa
4747
// - evaluasi nilai f(x) pada dua titik tengah: kiri dan kanan
4848
// - jika f(kiri) > f(kanan), maka nilai minimum berbeda di sisi kanan
4949
// proses berlanjut secara rekursif hingga interval lebih kecil dari epsilon
50-
func ternaryMinSearching(a, b, epsilon float64, f func(x float64) float64) (float64, error) {
50+
func TernaryMinSearching(a, b, epsilon float64, f func(x float64) float64) (float64, error) {
5151
if a == math.Inf(-1) || b == math.Inf(1) {
5252
return -1, fmt.Errorf("interval harus memiliki angka float64")
5353
}
@@ -59,7 +59,7 @@ func ternaryMinSearching(a, b, epsilon float64, f func(x float64) float64) (floa
5959
kiri := (2*a + b) / 3
6060
kanan := (a + 2*b) / 3
6161
if f(kiri) > f(kanan) {
62-
return ternaryMinSearching(kiri, b, epsilon, f)
62+
return TernaryMinSearching(kiri, b, epsilon, f)
6363
}
64-
return ternaryMinSearching(a, kanan, epsilon, f)
64+
return TernaryMinSearching(a, kanan, epsilon, f)
6565
}

searching/interpolation_test.go renamed to tests/algorithm/searching/interpolation_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package searching
22

3-
import "testing"
3+
import (
4+
"testing"
5+
6+
"github.com/bellshade/Golang/searching"
7+
)
48

59
func TestInterpolasi(t *testing.T) {
610
for _, test := range searchTests {
7-
valueAktual, _ := pencarianInterpolasi(test.data, test.key)
11+
valueAktual, _ := searching.PencarianInterpolasi(test.data, test.key)
812
if valueAktual != test.ekspetasi {
913
t.Errorf("test '%s' gagal: input array `%v` dengan key `%d`, ekspetasi `%d`, aktual: `%d`", test.name, test.data, test.key, test.ekspetasi, valueAktual)
1014
}

searching/linear_searching_test.go renamed to tests/algorithm/searching/linear_searching_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package searching
22

3-
import "testing"
3+
import (
4+
"testing"
5+
6+
"github.com/bellshade/Golang/searching"
7+
)
48

59
func TestLinearSearching(t *testing.T) {
610
for _, test := range searchTests {
7-
valueAktual, _ := linearSearching(test.data, test.key)
11+
valueAktual, _ := searching.LinearSearching(test.data, test.key)
812
if valueAktual != test.ekspetasi {
913
t.Errorf("test `%s` gagal: input array `%v` dengan key `%d`, ekspetasi: `%d`, aktual: `%d`", test.name, test.data, test.key, test.ekspetasi, valueAktual)
1014
}

searching/ternary_searching_test.go renamed to tests/algorithm/searching/ternary_searching_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package searching
33
import (
44
"math"
55
"testing"
6+
7+
"github.com/bellshade/Golang/searching"
68
)
79

810
const EPS = 1e-6
@@ -12,7 +14,7 @@ func equal(a, b float64) bool {
1214
}
1315

1416
func TestTernaryMax(t *testing.T) {
15-
var tests = []struct {
17+
tests := []struct {
1618
f func(x float64) float64
1719
a float64
1820
b float64
@@ -22,7 +24,7 @@ func TestTernaryMax(t *testing.T) {
2224
}
2325

2426
for _, test := range tests {
25-
hasil, error := ternaryMaxSearching(test.a, test.b, EPS, test.f)
27+
hasil, error := searching.TernaryMaxSearching(test.a, test.b, EPS, test.f)
2628
if error != nil {
2729
t.Errorf("error, data: `%v`", error)
2830
}
@@ -34,7 +36,7 @@ func TestTernaryMax(t *testing.T) {
3436
}
3537

3638
func TestTernaryMin(t *testing.T) {
37-
var tests = []struct {
39+
tests := []struct {
3840
f func(x float64) float64
3941
a float64
4042
b float64
@@ -45,7 +47,7 @@ func TestTernaryMin(t *testing.T) {
4547
}
4648

4749
for _, test := range tests {
48-
hasil, error := ternaryMinSearching(test.a, test.b, EPS, test.f)
50+
hasil, error := searching.TernaryMinSearching(test.a, test.b, EPS, test.f)
4951
if error != nil {
5052
t.Errorf("error, data: `%v`", error)
5153
}

0 commit comments

Comments
 (0)