// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

import "testing"

func TestSort(t *testing.T) {
	testCases := []struct {
		s1, s2 string
		want   int
	}{
		{"a1", "a2", -1},
		{"a11a", "a11b", -1},
		{"a01a1", "a1a01", 1},
		{"a2", "a1", 1},
		{"a10", "a2", 1},
		{"a1", "a10", -1},
		{"z11", "z2", 1},
		{"z2", "z11", -1},
		{"abc", "abd", -1},
		{"123", "45", 1},
		{"file1", "file1", 0},
		{"file", "file1", -1},
		{"file1", "file", 1},
		{"a01", "a1", 1},
		{"a1a", "a1b", -1},
	}

	for _, tc := range testCases {
		got := compareNatural(tc.s1, tc.s2)
		result := "✅"
		if got != tc.want {
			result = "❌"
			t.Errorf("%s CompareNatural(\"%s\", \"%s\") -> got %2d, want %2d\n", result, tc.s1, tc.s2, got, tc.want)
		} else {
			t.Logf("%s CompareNatural(\"%s\", \"%s\") -> got %2d, want %2d\n", result, tc.s1, tc.s2, got, tc.want)
		}
	}
}
