package humanize

import (
	"math"
	"testing"
)

type TestStruct struct {
	name      string
	format    string
	num       float64
	formatted string
}

func TestFormatFloat(t *testing.T) {
	tests := []TestStruct{
		{"default", "", 12345.6789, "12,345.68"},
		{"#", "#", 12345.6789, "12345.678900000"},
		{"#.", "#.", 12345.6789, "12346"},
		{"#,#", "#,#", 12345.6789, "12345,7"},
		{"#,##", "#,##", 12345.6789, "12345,68"},
		{"#,###", "#,###", 12345.6789, "12345,679"},
		{"#,###.", "#,###.", 12345.6789, "12,346"},
		{"#,###.##", "#,###.##", 12345.6789, "12,345.68"},
		{"#,###.###", "#,###.###", 12345.6789, "12,345.679"},
		{"#,###.####", "#,###.####", 12345.6789, "12,345.6789"},
		{"#.###,######", "#.###,######", 12345.6789, "12.345,678900"},
		{"bug46", "#,###.##", 52746220055.92342, "52,746,220,055.92"},
		{"#\u202f###,##", "#\u202f###,##", 12345.6789, "12 345,68"},

		// special cases
		{"NaN", "#", math.NaN(), "NaN"},
		{"+Inf", "#", math.Inf(1), "Infinity"},
		{"-Inf", "#", math.Inf(-1), "-Infinity"},
		{"signStr <= -0.000000001", "", -0.000000002, "-0.00"},
		{"signStr = 0", "", 0, "0.00"},
		{"Format directive must start with +", "+000", 12345.6789, "+12345.678900000"},
	}

	for _, test := range tests {
		got := FormatFloat(test.format, test.num)
		if got != test.formatted {
			t.Errorf("On %v (%v, %v), got %v, wanted %v",
				test.name, test.format, test.num, got, test.formatted)
		}
	}
	// Test a single integer
	got := FormatInteger("#", 12345)
	if got != "12345.000000000" {
		t.Errorf("On %v (%v, %v), got %v, wanted %v",
			"integerTest", "#", 12345, got, "12345.000000000")
	}
	// Test the things that could panic
	panictests := []TestStruct{
		{"FormatFloat(): invalid positive sign directive", "-", 12345.6789, "12,345.68"},
		{"FormatFloat(): thousands separator directive must be followed by 3 digit-specifiers", "0.01", 12345.6789, "12,345.68"},
	}
	for _, test := range panictests {
		didPanic := false
		var message interface{}
		func() {

			defer func() {
				if message = recover(); message != nil {
					didPanic = true
				}
			}()

			// call the target function
			_ = FormatFloat(test.format, test.num)

		}()
		if didPanic != true {
			t.Errorf("On %v, should have panic and did not.",
				test.name)
		}
	}

}
