package main

import (
	"fmt"
	"testing"
)

func TestFormatRupiah(t *testing.T) {
	uji := []struct {
		masuk      int
		diharapkan string
	}{
		{0, "Rp0"},
		{500, "Rp500"},
		{150000, "Rp150.000"},
		{-50000, "-Rp50.000"},
	}
	for _, u := range uji {
		if got := FormatRupiah(u.masuk); got != u.diharapkan {
			t.Errorf("FormatRupiah(%d) = %q, diharapkan %q", u.masuk, got, u.diharapkan)
		}
	}
}

// ExampleFormatRupiah adalah contoh pemakaian paling dasar.
// Komentar // Output: membuat go test memverifikasi keluarannya.
func ExampleFormatRupiah() {
	fmt.Println(FormatRupiah(1500000))
	fmt.Println(FormatRupiah(25000))
	fmt.Println(FormatRupiah(-7500))
	// Output:
	// Rp1.500.000
	// Rp25.000
	// -Rp7.500
}

// ExampleFormatRupiah_negatif adalah contoh bersuffix untuk kasus nilai
// negatif; suffix harus diawali huruf kecil.
func ExampleFormatRupiah_negatif() {
	fmt.Println(FormatRupiah(-1234567))
	// Output:
	// -Rp1.234.567
}

// ExampleKeranjang_Ringkasan mencontohkan pemakaian method Ringkasan milik
// tipe Keranjang; nama contoh mengikuti pola ExampleT_Method.
func ExampleKeranjang_Ringkasan() {
	k := NewKeranjang("Siti")
	k.Tambah("kaos")
	k.Tambah("topi")
	fmt.Println(k.Ringkasan())
	// Output:
	// Siti membeli 2 barang: kaos, topi
}

// ExampleNewKeranjang tidak memiliki komentar // Output:, sehingga hanya
// dikompilasi sebagai dokumentasi tanpa verifikasi keluaran.
func ExampleNewKeranjang() {
	k := NewKeranjang("Budi")
	k.Tambah("beras 5 kg")
}
