package address_utils

import (
	"fmt"
	"testing"
)

func TestCleanProvince(t *testing.T) {
	zone := "Wes KaaP"
	country := "South Africa"
	cleanCountry, cleanZone := CleanZone(&country, &zone)

	fmt.Printf("%s, %s converted to %s, %s\n", zone, country, *cleanZone, *cleanCountry)
}

func TestIsProvince(t *testing.T) {
	type args struct {
		address string
	}
	tests := []struct {
		name string
		args args
		want bool
	}{{
		name: "IsProvince",
		args: args{address: "North West, South Africa"},
		want: true,
	}, {
		name: "IsProvince2",
		args: args{address: "KwaZulu Natal, South Africa"},
		want: true,
	}, {
		name: "IsProvince3",
		args: args{address: "KZN, South Africa"},
		want: true,
	}, {
		name: "IsNotProvince",
		args: args{address: "22 Kruis Street, Potchefstroom, Potchefstroom, 2531, GP, ZA"},
		want: false,
	},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := IsProvince(tt.args.address); got != tt.want {
				t.Errorf("IsProvince() = %v, want %v", got, tt.want)
			}
		})
	}
}

func TestZoneDisplayName(t *testing.T) {
	type args struct {
		zone string
	}
	tests := []struct {
		name string
		args args
		want string
	}{{
		name: "IsValidZone",
		args: args{zone: "LP"},
		want: "Limpopo",
	}, {
		name: "IsValidZone2",
		args: args{zone: "KZN"},
		want: "KwaZulu-Natal",
	}, {
		name: "IsNotValidZone",
		args: args{zone: "invalidF"},
		want: "invalidF",
	}, {
		name: "IsNotValidZone 2",
		args: args{zone: "NP"},
		want: "NP",
	},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := GetZoneDisplayName(tt.args.zone); got != tt.want {
				t.Errorf("GetZoneDisplayName() = %v, want %v", got, tt.want)
			}
		})
	}
}