//go:build unit || all
// +build unit all

package util

import "testing"

func TestParseDiskSizeAsGiB(t *testing.T) {
	cases := []struct {
		name        string
		size        string
		expected    int64
		expectError bool
	}{
		{
			name:        "50 Gi",
			size:        "50Gi",
			expected:    50,
			expectError: false,
		},
		{
			name:        "50 GiB",
			size:        "50GiB",
			expected:    50,
			expectError: false,
		},
		{
			name:        "50 Gib",
			size:        "50Gib",
			expected:    50,
			expectError: false,
		},
		{
			name:        "50 gi",
			size:        "50gi",
			expected:    50,
			expectError: false,
		},
		{
			name:        "malformed size",
			size:        "50CiB",
			expected:    0,
			expectError: true,
		},
	}
	for _, tc := range cases {
		t.Run(tc.name, func(t *testing.T) {
			actual, err := ParseDiskSizeAsGiB(tc.size)
			if tc.expectError && err == nil {
				t.Errorf("expected error, got nil")
			}
			if !tc.expectError && err != nil {
				t.Errorf("unexpected error: %v", err)
			}
			if actual != tc.expected {
				t.Errorf("ParseDiskSizeAsGiB(%s) want %d, got %d", tc.size, tc.expected, actual)
			}
		})
	}
}
