mirror of
https://github.com/zrepl/zrepl.git
synced 2024-11-25 01:44:43 +01:00
f5f269bfd5
Sponsored-by: Prominic.NET, Inc. fixes #339
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package datasizeunit
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/zrepl/yaml-config"
|
|
)
|
|
|
|
func TestBits(t *testing.T) {
|
|
|
|
tcs := []struct {
|
|
input string
|
|
expectRate float64
|
|
expectErr string
|
|
}{
|
|
{`23 bit`, 23, ""}, // bit special case works
|
|
{`23bit`, 23, ""}, // also without space
|
|
|
|
{`10MiB`, 10 * (1 << 20) * 8, ""}, // integer unit without space
|
|
{`10 MiB`, 8 * 10 * (1 << 20), ""}, // integer unit with space
|
|
|
|
{`10.5 Kib`, 10.5 * (1 << 10), ""}, // floating point with bit unit works with space
|
|
{`10.5Kib`, 10.5 * (1 << 10), ""}, // floating point with bit unit works without space
|
|
|
|
// unit checks
|
|
{`1 bit`, 1, ""},
|
|
{`1 B`, 1 * 8, ""},
|
|
{`1 Kb`, 1e3, ""},
|
|
{`1 Kib`, 1 << 10, ""},
|
|
{`1 Mb`, 1e6, ""},
|
|
{`1 Mib`, 1 << 20, ""},
|
|
{`1 Gb`, 1e9, ""},
|
|
{`1 Gib`, 1 << 30, ""},
|
|
{`1 Tb`, 1e12, ""},
|
|
{`1 Tib`, 1 << 40, ""},
|
|
}
|
|
|
|
for _, tc := range tcs {
|
|
t.Run(tc.input, func(t *testing.T) {
|
|
|
|
var bits Bits
|
|
err := yaml.Unmarshal([]byte(tc.input), &bits)
|
|
if tc.expectErr != "" {
|
|
assert.Error(t, err)
|
|
assert.Regexp(t, tc.expectErr, err.Error())
|
|
assert.Zero(t, bits.bits)
|
|
} else {
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tc.expectRate, bits.bits)
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
}
|