diff --git a/balance/balance_test.go b/balance/balance_test.go index 40911ff..f4456c7 100644 --- a/balance/balance_test.go +++ b/balance/balance_test.go @@ -3,24 +3,24 @@ package balance import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/noxtest" ) func TestReadBalance(t *testing.T) { f, err := ReadBalance(noxtest.DataPath(t, GamedataFile)) - require.NoError(t, err) - require.Equal(t, float64(0.2), f.FloatDef("", "BerserkerPainRatio", -1)) - require.Equal(t, float64(0.2), f.FloatDef(TagSolo, "BerserkerPainRatio", -1)) - require.Equal(t, float64(-1), f.FloatDef("", "BerserkerDamage", -1)) - require.Equal(t, float64(100), f.FloatDef(TagSolo, "BerserkerDamage", -1)) - require.Equal(t, float64(150), f.FloatDef(TagArena, "BerserkerDamage", -1)) - require.Equal(t, float64(0.60), f.FloatDef("", "RepairCoefficient", -1)) - require.Equal(t, float64(150), f.FloatDef(TagArena, "WarriorMaxHealth", -1)) - require.Equal(t, []float64{0.5, 0.7, 1.0, 1.3, 1.6}, f.Array(TagSolo, "EnergyBoltDamage")) - require.Equal(t, []float64{1.3, 1.6, 2.0, 2.3, 2.6}, f.Array(TagArena, "EnergyBoltDamage")) - require.Equal(t, []float64{ + must.NoError(t, err) + must.EqOp(t, float64(0.2), f.FloatDef("", "BerserkerPainRatio", -1)) + must.EqOp(t, float64(0.2), f.FloatDef(TagSolo, "BerserkerPainRatio", -1)) + must.EqOp(t, float64(-1), f.FloatDef("", "BerserkerDamage", -1)) + must.EqOp(t, float64(100), f.FloatDef(TagSolo, "BerserkerDamage", -1)) + must.EqOp(t, float64(150), f.FloatDef(TagArena, "BerserkerDamage", -1)) + must.EqOp(t, float64(0.60), f.FloatDef("", "RepairCoefficient", -1)) + must.EqOp(t, float64(150), f.FloatDef(TagArena, "WarriorMaxHealth", -1)) + must.Eq(t, []float64{0.5, 0.7, 1.0, 1.3, 1.6}, f.Array(TagSolo, "EnergyBoltDamage")) + must.Eq(t, []float64{1.3, 1.6, 2.0, 2.3, 2.6}, f.Array(TagArena, "EnergyBoltDamage")) + must.Eq(t, []float64{ -1, 0, 5000, 11000, 18200, 26840, 37208, 49650, 64580, 82495, 103995, diff --git a/cfg/config_test.go b/cfg/config_test.go index 4ea4eda..90b61df 100644 --- a/cfg/config_test.go +++ b/cfg/config_test.go @@ -7,7 +7,7 @@ import ( "strings" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/noxtest" ) @@ -23,16 +23,16 @@ func TestParseConfig(t *testing.T) { if os.IsNotExist(err) { t.SkipNow() } - require.NoError(t, err) + must.NoError(t, err) data = bytes.ReplaceAll(data, []byte("\r\n"), []byte("\n")) file, err := Parse(bytes.NewReader(data)) - require.NoError(t, err) - require.Len(t, file.Sections, 2) + must.NoError(t, err) + must.SliceLen(t, 2, file.Sections) vers, _ := file.Sections[0].Get("Version") - require.NotZero(t, vers) + must.NotEqOp(t, "", vers) mouse, _ := file.Sections[1].Get("MousePickup") - require.NotZero(t, mouse) + must.NotEqOp(t, "", mouse) }) } } @@ -148,19 +148,19 @@ func TestConfig(t *testing.T) { c := c t.Run(c.name, func(t *testing.T) { file, err := Parse(strings.NewReader(c.text)) - require.NoError(t, err) - require.Equal(t, &File{ + must.NoError(t, err) + must.Eq(t, &File{ Sections: c.file, }, file) var buf bytes.Buffer err = file.WriteTo(&buf) - require.NoError(t, err) + must.NoError(t, err) exp := c.text if c.exp != "" { exp = c.exp } - require.Equal(t, exp, buf.String()) + must.EqOp(t, exp, buf.String()) }) } } @@ -175,8 +175,8 @@ I+M = ToggleInventory --- ` file, err := Parse(strings.NewReader(conf)) - require.NoError(t, err) - require.Equal(t, &File{ + must.NoError(t, err) + must.Eq(t, &File{ Sections: []Section{ { {Key: "Version", Value: "65537"}, @@ -191,14 +191,14 @@ I+M = ToggleInventory var buf bytes.Buffer err = file.WriteTo(&buf) - require.NoError(t, err) - require.Equal(t, conf, buf.String()) + must.NoError(t, err) + must.EqOp(t, conf, buf.String()) buf.Reset() file.Sections[0].Set("ServerName", "Test") err = file.WriteTo(&buf) - require.NoError(t, err) - require.Equal(t, `Version = 65537 + must.NoError(t, err) + must.EqOp(t, `Version = 65537 # comment VideoMode = 1024 768 16 ServerName = Test diff --git a/color/rgb555_test.go b/color/rgb555_test.go index 1ffd9c7..c75df66 100644 --- a/color/rgb555_test.go +++ b/color/rgb555_test.go @@ -3,7 +3,7 @@ package noxcolor import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestRGB555(t *testing.T) { @@ -11,6 +11,6 @@ func TestRGB555(t *testing.T) { c := RGB555(i) cl := c.ColorNRGBA() c2 := RGB555Color(cl.R, cl.G, cl.B) - require.Equal(t, c, c2, "0x%x", int(c)) + must.EqOp(t, c, c2, must.Sprintf("0x%x", int(c))) } } diff --git a/color/rgb565_test.go b/color/rgb565_test.go index 29f4562..7ed3c04 100644 --- a/color/rgb565_test.go +++ b/color/rgb565_test.go @@ -3,7 +3,7 @@ package noxcolor import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestRGB565(t *testing.T) { @@ -11,6 +11,6 @@ func TestRGB565(t *testing.T) { c := RGB565(i) cl := c.ColorNRGBA() c2 := RGB565Color(cl.R, cl.G, cl.B) - require.Equal(t, c, c2, "0x%x", int(c)) + must.EqOp(t, c, c2, must.Sprintf("0x%x", int(c))) } } diff --git a/color/rgba4444_test.go b/color/rgba4444_test.go index 44b9979..562cf91 100644 --- a/color/rgba4444_test.go +++ b/color/rgba4444_test.go @@ -3,7 +3,7 @@ package noxcolor import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestRGBA4444(t *testing.T) { @@ -11,6 +11,6 @@ func TestRGBA4444(t *testing.T) { c := RGBA4444(i) cl := c.ColorNRGBA() c2 := RGBA4444Color(cl.R, cl.G, cl.B, cl.A) - require.Equal(t, c, c2, "0x%x", int(c)) + must.EqOp(t, c, c2, must.Sprintf("0x%x", int(c))) } } diff --git a/color/rgba5551_test.go b/color/rgba5551_test.go index 9ab9f41..5063331 100644 --- a/color/rgba5551_test.go +++ b/color/rgba5551_test.go @@ -4,7 +4,7 @@ import ( "image/color" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestRGBA5551(t *testing.T) { @@ -12,7 +12,7 @@ func TestRGBA5551(t *testing.T) { c := RGBA5551(i) cl := c.ColorNRGBA() c2 := RGBA5551Color(cl.R, cl.G, cl.B, cl.A) - require.Equal(t, c, c2, "0x%x", int(c)) + must.EqOp(t, c, c2, must.Sprintf("0x%x", int(c))) } } @@ -31,8 +31,8 @@ func TestRGBA5551Builtin(t *testing.T) { } { t.Run(c.name, func(t *testing.T) { got := m.Convert16(c.exp) - require.Equal(t, c.exp16, got) - require.Equal(t, c.exp, c.model.Convert(got)) + must.EqOp(t, c.exp16, got) + must.EqOp(t, c.exp, c.model.Convert(got)) }) } } diff --git a/console/parsecmd_test.go b/console/parsecmd_test.go index ad62855..82fd7fa 100644 --- a/console/parsecmd_test.go +++ b/console/parsecmd_test.go @@ -3,10 +3,10 @@ package console import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestDecodeSecretToken(t *testing.T) { got := EncodeSecret("racoiaws") - require.Equal(t, "0YAKikQs", got) + must.EqOp(t, "0YAKikQs", got) } diff --git a/go.mod b/go.mod index 21e5414..bb5e117 100644 --- a/go.mod +++ b/go.mod @@ -11,10 +11,10 @@ require ( github.com/noxworld-dev/noxcrypt v0.0.0-20230831140413-02623e75408e github.com/noxworld-dev/noxscript/eud/v171 v171.3.1 github.com/noxworld-dev/noxscript/ns v1.0.2 - github.com/noxworld-dev/noxscript/ns/v3 v3.4.0 + github.com/noxworld-dev/noxscript/ns/v3 v3.4.2 github.com/noxworld-dev/noxscript/ns/v4 v4.14.0 + github.com/shoenig/test v1.7.0 github.com/spf13/cobra v1.7.0 - github.com/stretchr/testify v1.8.4 github.com/traefik/yaegi v0.15.1 github.com/veandco/go-sdl2 v0.5.0-alpha.4 github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 @@ -26,10 +26,10 @@ require ( ) require ( - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/spf13/pflag v1.0.5 // indirect golang.org/x/crypto v0.12.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect ) + +replace github.com/traefik/yaegi => github.com/dennwc/yaegi v0.14.4-0.20230902105020-22e112bbf6e8 diff --git a/go.sum b/go.sum index 3d44008..6443dbd 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,16 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dennwc/yaegi v0.14.4-0.20230902105020-22e112bbf6e8 h1:P9jSJ3tuBZA0ZVljCc5y6ONgvSEfl3ekgiqqE9qW+kg= +github.com/dennwc/yaegi v0.14.4-0.20230902105020-22e112bbf6e8/go.mod h1:pkOs3wa7+hKuTCqPav6dNWzfV5G5ZYK5hl5F9xBHp6I= github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 h1:zDw5v7qm4yH7N8C8uWd+8Ii9rROdgWxQuGoJ9WDXxfk= github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b h1:GgabKamyOYguHqHjSkDACcgoPIz3w0Dis/zJ1wyHHHU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/mathgl v1.0.0 h1:t9DznWJlXxxjeeKLIdovCOVJQk/GzDEL7h/h+Ro2B68= github.com/go-gl/mathgl v1.0.0/go.mod h1:yhpkQzEiH9yPyxDUGzkmgScbaBVlhC06qodikEM0ZwQ= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/icza/bitio v1.1.0 h1:ysX4vtldjdi3Ygai5m1cWy4oLkhWTAi+SyO6HC8L9T0= github.com/icza/bitio v1.1.0/go.mod h1:0jGnlLAx8MKMr9VGnn/4YrvZiprkvBelsVIbA9Jjr9A= github.com/icza/mighty v0.0.0-20180919140131-cfd07d671de6 h1:8UsGZ2rr2ksmEru6lToqnXgA8Mz1DP11X4zSJ159C3k= @@ -21,21 +25,21 @@ github.com/noxworld-dev/noxscript/eud/v171 v171.3.1 h1:KRugWrwLY54qiRucyJn3iqvWr github.com/noxworld-dev/noxscript/eud/v171 v171.3.1/go.mod h1:Aigh/4MqsXvkPY/2JXXaNZghGK8mScpsip3Kdz6EUxE= github.com/noxworld-dev/noxscript/ns v1.0.2 h1:PMpKqRi3fEhwAfBM+PZVTopT6o2vL6AmCDQH8zV5QWU= github.com/noxworld-dev/noxscript/ns v1.0.2/go.mod h1:DobGfGPUycvh7D6hB5mW5gbL1QiRsw7QQiVPJz4wYZ0= -github.com/noxworld-dev/noxscript/ns/v3 v3.4.0 h1:YsKB7XCDH6e8MO1+YY+9kBgZAXAGhOaR8vwT1zdoVeA= -github.com/noxworld-dev/noxscript/ns/v3 v3.4.0/go.mod h1:rank2GpncRp/4Z8O2o/02N7dCavOIsq2XEMxZyhBT70= +github.com/noxworld-dev/noxscript/ns/v3 v3.4.2 h1:cvwGW7Cnx7nIurippYXiG17ft3brxjOtW3TWIiLsZ2s= +github.com/noxworld-dev/noxscript/ns/v3 v3.4.2/go.mod h1:oouTgZPYQ/MeLLkpQsYwU7n+oIwfXB4DryLU0UhSj98= github.com/noxworld-dev/noxscript/ns/v4 v4.14.0 h1:43GYbBgVfVjqVyPrOBwxsNYf25ZGNF08aIXEslsu6/U= github.com/noxworld-dev/noxscript/ns/v4 v4.14.0/go.mod h1:l8sd8BvVo6LjzYjzAr7V/nbBkp0B/UMQRWbVTq0U67A= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/shoenig/test v1.7.0 h1:eWcHtTXa6QLnBvm0jgEabMRN/uJ4DMV3M8xUGgRkZmk= +github.com/shoenig/test v1.7.0/go.mod h1:UxJ6u/x2v/TNs/LoLxBNJRV9DiwBBKYxXSyczsBHFoI= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/traefik/yaegi v0.15.1 h1:YA5SbaL6HZA0Exh9T/oArRHqGN2HQ+zgmCY7dkoTXu4= -github.com/traefik/yaegi v0.15.1/go.mod h1:AVRxhaI2G+nUsaM1zyktzwXn69G3t/AuTDrCiTds9p0= github.com/veandco/go-sdl2 v0.5.0-alpha.4 h1:+XyPktayFrjYA6n3qUWiQDw6jOVJye27q8gmXvnYAHQ= github.com/veandco/go-sdl2 v0.5.0-alpha.4/go.mod h1:OROqMhHD43nT4/i9crJukyVecjPNYYuCofep6SNiAjY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= diff --git a/ifs/normalize_test.go b/ifs/normalize_test.go index 6138326..7b1b4a7 100644 --- a/ifs/normalize_test.go +++ b/ifs/normalize_test.go @@ -9,27 +9,27 @@ import ( "strings" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestNormalize(t *testing.T) { dir, err := os.MkdirTemp("", "nox_fs_") - require.NoError(t, err) + must.NoError(t, err) defer os.RemoveAll(dir) dir1 := filepath.Join(dir, "AbC", "def") err = os.MkdirAll(dir1, 0755) - require.NoError(t, err) + must.NoError(t, err) file1 := filepath.Join(dir1, "File.txt") err = os.WriteFile(file1, []byte("data"), 0644) - require.NoError(t, err) + must.NoError(t, err) - require.Equal(t, + must.EqOp(t, file1, Normalize(strings.Join([]string{dir, "abc", "Def", "FILE.TXT"}, "\\")), ) - require.Equal(t, + must.EqOp(t, filepath.Join(dir1, "NotExistent"), Normalize(strings.Join([]string{dir, "ABC", "DeF", "NotExistent"}, "\\")), ) diff --git a/maps/maprender/maprender_test.go b/maps/maprender/maprender_test.go index 811fecf..7975f63 100644 --- a/maps/maprender/maprender_test.go +++ b/maps/maprender/maprender_test.go @@ -4,7 +4,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/maps" "github.com/noxworld-dev/opennox-lib/noxtest" @@ -23,16 +23,16 @@ var casesMapDraw = []struct { func TestDraw(t *testing.T) { r, err := NewRenderer(noxtest.DataPath(t)) - require.NoError(t, err) + must.NoError(t, err) defer r.Close() path := noxtest.DataPath(t, maps.Dir) for _, m := range casesMapDraw { t.Run(m.Name, func(t *testing.T) { mp, err := maps.ReadMap(filepath.Join(path, m.Name)) - require.NoError(t, err) + must.NoError(t, err) img, err := r.DrawMap(mp, nil) noxtest.WritePNG(t, m.Name+".png", img, m.Hash) - require.NoError(t, err) + must.NoError(t, err) }) } } @@ -40,14 +40,14 @@ func TestDraw(t *testing.T) { func BenchmarkDraw(b *testing.B) { b.ReportAllocs() r, err := NewRenderer(noxtest.DataPath(b)) - require.NoError(b, err) + must.NoError(b, err) defer r.Close() path := noxtest.DataPath(b, maps.Dir) b.StopTimer() for _, m := range casesMapDraw { b.Run(m.Name, func(b *testing.B) { mp, err := maps.ReadMap(filepath.Join(path, m.Name)) - require.NoError(b, err) + must.NoError(b, err) b.ResetTimer() for i := 0; i < b.N; i++ { _, _ = r.DrawMap(mp, nil) diff --git a/maps/maps_test.go b/maps/maps_test.go index 559cf55..92cb157 100644 --- a/maps/maps_test.go +++ b/maps/maps_test.go @@ -9,9 +9,8 @@ import ( "testing" crypt "github.com/noxworld-dev/noxcrypt" - "github.com/stretchr/testify/require" - "github.com/noxworld-dev/noxscript/ns/asm" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/ifs" "github.com/noxworld-dev/opennox-lib/maps" @@ -134,8 +133,8 @@ func TestReadFileInfo(t *testing.T) { for _, m := range casesMapInfo { t.Run(m.Filename, func(t *testing.T) { info, err := maps.ReadMapInfo(filepath.Join(path, m.Filename)) - require.NoError(t, err) - require.Equal(t, m, *info) + must.NoError(t, err) + must.Eq(t, m, *info) }) } } @@ -145,7 +144,7 @@ func TestReadFile(t *testing.T) { for _, m := range casesMapInfo { t.Run(m.Filename, func(t *testing.T) { mp, err := maps.ReadMap(filepath.Join(path, m.Filename)) - require.NoError(t, err) + must.NoError(t, err) for _, s := range mp.Unknown { t.Logf("unknwon section: %q [%d]", s.Name, len(s.Data)) } @@ -154,7 +153,7 @@ func TestReadFile(t *testing.T) { t.Logf("script [%d]", len(mp.Script.Data)) } else { sc, err := asm.ReadScript(bytes.NewReader(mp.Script.Data)) - require.NoError(t, err) + must.NoError(t, err) t.Logf("script [%d]: %d funcs, %d strings", len(mp.Script.Data), len(sc.Funcs), len(sc.Strings)) } } @@ -165,7 +164,7 @@ func TestReadFile(t *testing.T) { func TestMapSections(t *testing.T) { path := noxtest.DataPath(t, maps.Dir) list, err := os.ReadDir(path) - require.NoError(t, err) + must.NoError(t, err) for _, fi := range list { if !fi.IsDir() { continue @@ -176,12 +175,12 @@ func TestMapSections(t *testing.T) { } t.Run(strings.ToLower(fi.Name()), func(t *testing.T) { f, err := ifs.Open(fname) - require.NoError(t, err) + must.NoError(t, err) defer f.Close() rd, err := maps.NewReader(f) - require.NoError(t, err) + must.NoError(t, err) sect, err := rd.ReadSectionsRaw() - require.NoError(t, err) + must.NoError(t, err) for _, s := range sect { if !s.Supported() { t.Logf("skip section: %q", s.Name) @@ -189,11 +188,11 @@ func TestMapSections(t *testing.T) { } t.Run(s.Name, func(t *testing.T) { d, err := s.Decode() - require.NoError(t, err) + must.NoError(t, err) //t.Logf("%#v", d) data, err := d.MarshalBinary() - require.NoError(t, err) - require.Equal(t, s.Data, data, "%q", s.Data) + must.NoError(t, err) + must.Eq(t, s.Data, data, must.Sprintf("%q", s.Data)) }) } }) @@ -203,7 +202,7 @@ func TestMapSections(t *testing.T) { func TestMapWrite(t *testing.T) { path := noxtest.DataPath(t, maps.Dir) list, err := os.ReadDir(path) - require.NoError(t, err) + must.NoError(t, err) for _, fi := range list { if !fi.IsDir() { continue @@ -214,27 +213,27 @@ func TestMapWrite(t *testing.T) { } t.Run(strings.ToLower(fi.Name()), func(t *testing.T) { f, err := ifs.Open(fname) - require.NoError(t, err) + must.NoError(t, err) defer f.Close() var exp bytes.Buffer rd, err := maps.NewReader(io.TeeReader(f, &exp)) - require.NoError(t, err) + must.NoError(t, err) sect, err := rd.ReadSectionsRaw() - require.NoError(t, err) + must.NoError(t, err) t.Logf("map crc: 0x%x", rd.Map().CRC()) var got buffer wr, err := maps.NewWriter(&got, rd.Header()) - require.NoError(t, err) + must.NoError(t, err) err = wr.WriteRawSections(sect) - require.NoError(t, err) + must.NoError(t, err) err = wr.Close() - require.NoError(t, err) + must.NoError(t, err) if bexp, bgot := exp.Bytes(), got.Bytes(); !bytes.Equal(bexp, bgot) { - require.Equal(t, decodeMapBytes(bexp), decodeMapBytes(bgot)) - require.Equal(t, bexp, bgot) + must.Eq(t, decodeMapBytes(bexp), decodeMapBytes(bgot)) + must.Eq(t, bexp, bgot) } }) } diff --git a/maps/minidraw/minidraw_test.go b/maps/minidraw/minidraw_test.go index df48a33..5185458 100644 --- a/maps/minidraw/minidraw_test.go +++ b/maps/minidraw/minidraw_test.go @@ -5,7 +5,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/maps" "github.com/noxworld-dev/opennox-lib/maps/maprender" @@ -25,13 +25,13 @@ var casesMapDraw = []struct { func TestDraw(t *testing.T) { r, err := maprender.NewRenderer(noxtest.DataPath(t)) - require.NoError(t, err) + must.NoError(t, err) defer r.Close() path := noxtest.DataPath(t, maps.Dir) for _, m := range casesMapDraw { t.Run(m.Name, func(t *testing.T) { mp, err := maps.ReadMap(filepath.Join(path, m.Name)) - require.NoError(t, err) + must.NoError(t, err) img := MinimapRGBA(mp, color.Black) noxtest.WritePNG(t, m.Name+".png", img, m.Hash) }) diff --git a/maps/server_test.go b/maps/server_test.go index 5d88b94..4cb5efe 100644 --- a/maps/server_test.go +++ b/maps/server_test.go @@ -9,7 +9,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/ifs" "github.com/noxworld-dev/opennox-lib/noxtest" @@ -60,23 +60,23 @@ func TestIsAllowedFile(t *testing.T) { func copyFile(t testing.TB, dst, src string) { s, err := ifs.Open(src) - require.NoError(t, err) + must.NoError(t, err) defer s.Close() d, err := os.Create(dst) - require.NoError(t, err) + must.NoError(t, err) defer d.Close() _, err = io.Copy(d, s) - require.NoError(t, err) + must.NoError(t, err) err = d.Close() - require.NoError(t, err) + must.NoError(t, err) } func TestMapServer(t *testing.T) { dpath := noxtest.DataPath(t, "maps") srcdir, err := os.MkdirTemp("", "opennox-map-test-src-*") - require.NoError(t, err) + must.NoError(t, err) dstdir, err := os.MkdirTemp("", "opennox-map-test-dst-*") - require.NoError(t, err) + must.NoError(t, err) t.Cleanup(func() { _ = os.RemoveAll(srcdir) _ = os.RemoveAll(dstdir) @@ -90,7 +90,7 @@ func TestMapServer(t *testing.T) { t.Run(name, func(t *testing.T) { // Copy a well-known map to a source folder. err = os.MkdirAll(filepath.Join(srcdir, name), 0755) - require.NoError(t, err) + must.NoError(t, err) smpath := filepath.Join(srcdir, name, name+".map") copyFile(t, smpath, filepath.Join(dpath, mname, mname+".map")) @@ -98,7 +98,7 @@ func TestMapServer(t *testing.T) { srv := NewServer(srcdir) hsrv := &http.Server{Handler: srv} l, err := net.Listen("tcp", ":0") - require.NoError(t, err) + must.NoError(t, err) t.Cleanup(func() { _ = l.Close() }) @@ -108,7 +108,7 @@ func TestMapServer(t *testing.T) { if err == http.ErrServerClosed { return } - require.NoError(t, err) + must.NoError(t, err) }() t.Cleanup(func() { _ = hsrv.Close() @@ -116,11 +116,11 @@ func TestMapServer(t *testing.T) { ctx := context.Background() cli, err := NewClient(ctx, l.Addr().String()) - require.NoError(t, err) + must.NoError(t, err) defer cli.Close() err = cli.DownloadMap(ctx, dstdir, name) - require.NoError(t, err) + must.NoError(t, err) }) } } diff --git a/modifiers/parse_test.go b/modifiers/parse_test.go index 60994c1..c631c76 100644 --- a/modifiers/parse_test.go +++ b/modifiers/parse_test.go @@ -5,7 +5,7 @@ import ( "os" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/noxtest" ) @@ -14,7 +14,7 @@ const noxModifier = "modifier.bin" func TestParse(t *testing.T) { f, err := ReadFile(noxtest.DataPath(t, noxModifier)) - require.NoError(t, err) + must.NoError(t, err) data, _ := json.MarshalIndent(f, "", "\t") os.WriteFile("modifiers.json", data, 0644) diff --git a/noxfont/font_test.go b/noxfont/font_test.go index bb28572..8b4814b 100644 --- a/noxfont/font_test.go +++ b/noxfont/font_test.go @@ -8,7 +8,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "golang.org/x/image/font" "golang.org/x/image/math/fixed" @@ -29,13 +29,13 @@ func TestFonts(t *testing.T) { t.Run(name, func(t *testing.T) { path := filepath.Join(path, name+Ext) data, err := os.ReadFile(path) - require.NoError(t, err) + must.NoError(t, err) fnt, err := Decode(bytes.NewReader(data)) - require.NoError(t, err) + must.NoError(t, err) t.Run("encode", func(t *testing.T) { got, err := fnt.Encode() - require.NoError(t, err) - require.Equal(t, data, got) + must.NoError(t, err) + must.Eq(t, data, got) }) t.Run("draw", func(t *testing.T) { text := "The quick brown fox jumps over the lazy dog." diff --git a/noximage/pcx/palette_test.go b/noximage/pcx/palette_test.go index 357037e..ed654d7 100644 --- a/noximage/pcx/palette_test.go +++ b/noximage/pcx/palette_test.go @@ -7,7 +7,7 @@ import ( "os" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/noxtest" ) @@ -26,13 +26,13 @@ func TestDecodePalette(t *testing.T) { path := noxtest.DataPath(t, "default.pal") f, err := os.Open(path) - require.NoError(t, err) + must.NoError(t, err) defer f.Close() pal, err := DecodePalette(f) - require.NoError(t, err) + must.NoError(t, err) writePNG(t, "default.png", newPaletteImage(pal)) - require.Equal(t, DefaultPalette(), pal, "\n%#v", pal) + must.Eq(t, DefaultPalette(), pal, must.Sprintf("\n%#v", pal)) } func TestPlaceholderPalette(t *testing.T) { diff --git a/noxnet/message_test.go b/noxnet/message_test.go index 7505aec..f365f7e 100644 --- a/noxnet/message_test.go +++ b/noxnet/message_test.go @@ -8,7 +8,7 @@ import ( "strings" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestDecodePacket(t *testing.T) { @@ -119,21 +119,21 @@ func TestDecodePacket(t *testing.T) { data, err := os.ReadFile(fname) if errors.Is(err, fs.ErrNotExist) { data, err = AppendPacket(nil, c.packet) - require.NoError(t, err) + must.NoError(t, err) err = os.WriteFile(fname, data, 0644) - require.NoError(t, err) + must.NoError(t, err) } - require.NoError(t, err) + must.NoError(t, err) p, n, err := DecodeAnyPacket(!c.client, data) - require.NoError(t, err) - require.Equal(t, c.packet, p) - require.Equal(t, int(len(data)), int(n)) + must.NoError(t, err) + must.Eq(t, c.packet, p) + must.EqOp(t, len(data), n) buf, err := AppendPacket(nil, p) - require.NoError(t, err) - require.Equal(t, data, buf) + must.NoError(t, err) + must.Eq(t, data, buf) n, err = DecodePacket(data, p) - require.NoError(t, err) - require.Equal(t, int(len(data)), int(n)) + must.NoError(t, err) + must.EqOp(t, len(data), n) }) } } diff --git a/noxtest/noxtest.go b/noxtest/noxtest.go index a6e4e2e..3b1ffe2 100644 --- a/noxtest/noxtest.go +++ b/noxtest/noxtest.go @@ -10,7 +10,7 @@ import ( "os" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/datapath" ) @@ -25,14 +25,14 @@ func DataPath(t testing.TB, sub ...string) string { func WritePNG(t testing.TB, path string, img image.Image, exp string) { f, err := os.Create(path) - require.NoError(t, err) + must.NoError(t, err) defer f.Close() h := md5.New() err = png.Encode(io.MultiWriter(f, h), img) - require.NoError(t, err) + must.NoError(t, err) got := hex.EncodeToString(h.Sum(nil)) if exp != "" { - require.Equal(t, exp, got) + must.EqOp(t, exp, got) } else { t.Logf("%s: %s", path, got) } diff --git a/prand/prand_test.go b/prand/prand_test.go index d90bd55..65adb46 100644 --- a/prand/prand_test.go +++ b/prand/prand_test.go @@ -3,7 +3,7 @@ package prand import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestRand(t *testing.T) { @@ -17,7 +17,7 @@ func TestRand(t *testing.T) { for i := 0; i < 10; i++ { goti = append(goti, r.Int(0, 0xff)) } - require.Equal(t, expi, goti) + must.Eq(t, expi, goti) expf := []float64{ -0.625629450097, 0.48100220475199995, @@ -30,5 +30,5 @@ func TestRand(t *testing.T) { for i := 0; i < 10; i++ { gotf = append(gotf, r.Float(-1, +2)) } - require.Equal(t, expf, gotf) + must.Eq(t, expf, gotf) } diff --git a/script/eval/vm_test.go b/script/eval/vm_test.go index f0aaea9..63164e3 100644 --- a/script/eval/vm_test.go +++ b/script/eval/vm_test.go @@ -5,7 +5,7 @@ import ( "path/filepath" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/script" "github.com/noxworld-dev/opennox-lib/script/scripttest" @@ -13,7 +13,7 @@ import ( func TestScriptDir(t *testing.T) { dir, err := os.MkdirTemp("", "opennox_eval_*") - require.NoError(t, err) + must.NoError(t, err) defer func() { _ = os.RemoveAll(dir) }() @@ -21,9 +21,9 @@ func TestScriptDir(t *testing.T) { writeFile := func(path string, src string) { path = filepath.Join(dir, path) err = os.MkdirAll(filepath.Dir(path), 0755) - require.NoError(t, err) + must.NoError(t, err) err = os.WriteFile(path, []byte(src), 0644) - require.NoError(t, err) + must.NoError(t, err) } writeFile("pkg1/script.go", ` @@ -39,6 +39,18 @@ var Cnt int func init() { println("init one"); Cnt++ } func One() { println("one"); pkg2.Two(); pkg3.Three(); Cnt++ } func OnFrame() { println("frame"); Cnt++ } + +func Panic1() { + panic2() +} +func panic2() { + func(){ + panic3() + }() +} +func panic3() { + panic("test") +} `) writeFile("pkg2/script.go", ` @@ -54,36 +66,62 @@ package pkg3 func init() { println("init three") } func Three() { println("three") } `) - - vm := NewVM(scripttest.Game{T: t}, dir) + g := &scripttest.Game{T: t} + vm := NewVM(g, dir) err = vm.ExecFile("pkg1") - require.NoError(t, err) + must.NoError(t, err) rv, ok := vm.exportByName(`One`) - require.True(t, ok) + must.True(t, ok) fnc, ok := rv.Interface().(func()) - require.True(t, ok) + must.True(t, ok) fnc() _, err = vm.Exec(`println("builtin")`) - require.NoError(t, err) + must.NoError(t, err) _, err = vm.Exec(`fmt.Println("fmt")`) - require.NoError(t, err) + must.NoError(t, err) _, err = vm.Exec(`Game.Global().Print("global")`) - require.NoError(t, err) + must.NoError(t, err) vm.OnFrame() rv, ok = vm.exportByName(`Cnt`) - require.True(t, ok) + must.True(t, ok) p, ok := rv.Interface().(int) - require.True(t, ok) - require.Equal(t, int(3), p) + must.True(t, ok) + must.EqOp(t, 3, p) one, err := script.GetVMSymbol[func()](vm, "One") - require.NoError(t, err) + must.NoError(t, err) one() cnt, err := script.GetVMSymbolPtr[int](vm, "Cnt") - require.NoError(t, err) - require.Equal(t, int(4), *cnt) + must.NoError(t, err) + must.EqOp(t, 4, *cnt) + + panic1, err := script.GetVMSymbol[func()](vm, "Panic1") + must.NoError(t, err) + func() { + defer func() { + recover() + }() + panic1() + }() + must.EqOp(t, `info: init two +info: init three +info: init one +info: one +info: two +info: three +info: builtin +info: fmt +info: frame +info: one +info: two +info: three +error: /src/pkg1/script.go:24:2: panic: pkg1.panic3(...) +error: /src/pkg1/script.go:20:3: panic: pkg1.panic2.func(...) +error: /src/pkg1/script.go:19:2: panic: pkg1.panic2.func(...) +error: /src/pkg1/script.go:16:2: panic: pkg1.Panic1(...) +`, g.Log.String()) } diff --git a/script/lua/mapv0/api_test.go b/script/lua/mapv0/api_test.go index 4a8dc77..2b90bd1 100644 --- a/script/lua/mapv0/api_test.go +++ b/script/lua/mapv0/api_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" glua "github.com/yuin/gopher-lua" "github.com/noxworld-dev/opennox-lib/script" @@ -53,5 +53,5 @@ func (g *testGame) Time() time.Duration { func (g *testGame) Exec(s string) { _, err := g.vm.Exec(s) - require.NoError(g.t, err) + must.NoError(g.t, err) } diff --git a/script/lua/mapv0/object_test.go b/script/lua/mapv0/object_test.go index ccabe93..98906bf 100644 --- a/script/lua/mapv0/object_test.go +++ b/script/lua/mapv0/object_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/script" "github.com/noxworld-dev/opennox-lib/types" @@ -297,8 +297,8 @@ func TestObjectSetPos(t *testing.T) { v2.x = v2.x + 1 v2.y = v2.y + 2 `) - require.Equal(t, types.Pointf{X: 3, Y: 4}, obj1.pos) - require.Equal(t, types.Pointf{X: 8, Y: 10}, obj2.pos) + must.EqOp(t, types.Pointf{X: 3, Y: 4}, obj1.pos) + must.EqOp(t, types.Pointf{X: 8, Y: 10}, obj2.pos) } func TestObjectDelete(t *testing.T) { @@ -309,7 +309,7 @@ func TestObjectDelete(t *testing.T) { local v = Nox.Object("Test") v:Delete() `) - require.True(t, v.deleted) + must.True(t, v.deleted) } func TestObjectDestroy(t *testing.T) { @@ -320,19 +320,19 @@ func TestObjectDestroy(t *testing.T) { v = Nox.Object("Test") v:Destroy() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false g.Exec(` v:Break() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false g.Exec(` v:Kill() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false } @@ -353,12 +353,12 @@ func TestObjectEnabled(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v.enabled = not v.enabled `) - require.True(t, v.enabled) + must.True(t, v.enabled) } func TestObjectToggle(t *testing.T) { @@ -378,12 +378,12 @@ func TestObjectToggle(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v:Toggle() `) - require.True(t, v.enabled) + must.True(t, v.enabled) } func TestObjectOwner(t *testing.T) { @@ -395,29 +395,29 @@ func TestObjectOwner(t *testing.T) { v1 = Nox.Object("Test") v2 = Nox.Object("Test2"):SetOwner(v1) `) - require.Equal(t, obj1, obj2.owner) + must.Eq[script.Object](t, obj1, obj2.owner) g.Exec(` v2:SetOwner(nil) `) - require.Nil(t, obj2.owner) + must.Eq(t, nil, obj2.owner) g.Exec(` v2.owner = v1 `) - require.Equal(t, obj1, obj2.owner) + must.Eq[script.Object](t, obj1, obj2.owner) g.Exec(` v2.owner = nil `) - require.Nil(t, obj2.owner) + must.Eq(t, nil, obj2.owner) g.Exec(` v2.owner = v1 v1.owner = v2.owner `) - require.Equal(t, obj1, obj2.owner) - require.Equal(t, obj1, obj1.owner) + must.Eq[script.Object](t, obj1, obj2.owner) + must.Eq[script.Object](t, obj1, obj1.owner) } // TODO: test object groups diff --git a/script/lua/mapv0/player_test.go b/script/lua/mapv0/player_test.go index 2e92fb5..7e71bc2 100644 --- a/script/lua/mapv0/player_test.go +++ b/script/lua/mapv0/player_test.go @@ -3,7 +3,7 @@ package mapv0_test import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/script" "github.com/noxworld-dev/opennox-lib/types" @@ -155,14 +155,14 @@ func TestPlayersPrint(t *testing.T) { host:Print("foo") `) - require.Equal(t, "", p1.msg) - require.Equal(t, "foo", p2.msg) + must.EqOp(t, "", p1.msg) + must.EqOp(t, "foo", p2.msg) g.Exec(` Nox.Players.Print("bar") `) - require.Equal(t, "bar", p1.msg) - require.Equal(t, "bar", p2.msg) + must.EqOp(t, "bar", p1.msg) + must.EqOp(t, "bar", p2.msg) } func TestPlayersBlind(t *testing.T) { @@ -175,38 +175,38 @@ func TestPlayersBlind(t *testing.T) { host:Blind() `) - require.Equal(t, false, p1.blind) - require.Equal(t, true, p2.blind) + must.EqOp(t, false, p1.blind) + must.EqOp(t, true, p2.blind) g.Exec(` host:Blind(false) `) - require.Equal(t, false, p1.blind) - require.Equal(t, false, p2.blind) + must.EqOp(t, false, p1.blind) + must.EqOp(t, false, p2.blind) g.Exec(` host:Blind(true) `) - require.Equal(t, false, p1.blind) - require.Equal(t, true, p2.blind) + must.EqOp(t, false, p1.blind) + must.EqOp(t, true, p2.blind) g.Exec(` Nox.Players.Blind() `) - require.Equal(t, true, p1.blind) - require.Equal(t, true, p2.blind) + must.EqOp(t, true, p1.blind) + must.EqOp(t, true, p2.blind) g.Exec(` Nox.Players.Blind(false) `) - require.Equal(t, false, p1.blind) - require.Equal(t, false, p2.blind) + must.EqOp(t, false, p1.blind) + must.EqOp(t, false, p2.blind) g.Exec(` Nox.Players.Blind(true) `) - require.Equal(t, true, p1.blind) - require.Equal(t, true, p2.blind) + must.EqOp(t, true, p1.blind) + must.EqOp(t, true, p2.blind) } func TestPlayerUnit(t *testing.T) { @@ -247,7 +247,7 @@ func TestPlayerUnitPos(t *testing.T) { p.x, p.y = 3, 4 `) - require.Equal(t, types.Pointf{3, 4}, v.pos) + must.EqOp(t, types.Pointf{3, 4}, v.pos) } func TestPlayerPosArg(t *testing.T) { @@ -260,7 +260,7 @@ func TestPlayerPosArg(t *testing.T) { local v = Nox.Object("Unit2") v:SetPos(p) `) - require.Equal(t, types.Pointf{1, 2}, v2.pos) + must.EqOp(t, types.Pointf{1, 2}, v2.pos) } func TestPlayerObjArg(t *testing.T) { @@ -273,6 +273,6 @@ func TestPlayerObjArg(t *testing.T) { local v = Nox.Object("Unit2") v:Follow(p) `) - require.Equal(t, UnitFollow, v2.st) - require.Equal(t, types.Pointf{1, 2}, v2.targ) + must.EqOp(t, UnitFollow, v2.st) + must.EqOp(t, types.Pointf{1, 2}, v2.targ) } diff --git a/script/lua/mapv0/timer_test.go b/script/lua/mapv0/timer_test.go index 6960c78..ae3fc8b 100644 --- a/script/lua/mapv0/timer_test.go +++ b/script/lua/mapv0/timer_test.go @@ -3,7 +3,7 @@ package mapv0_test import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestFrameTimer(t *testing.T) { @@ -16,9 +16,9 @@ func TestFrameTimer(t *testing.T) { end Nox.FrameTimer(1, foo) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) g.Tick() - require.Equal(t, float32(1), v.pos.X) + must.EqOp(t, float32(1), v.pos.X) } func TestFrameTimerStop(t *testing.T) { @@ -31,14 +31,14 @@ func TestFrameTimerStop(t *testing.T) { end t = Nox.FrameTimer(1, foo) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) g.Exec(` t:Stop() `) for i := 0; i < 3; i++ { g.Tick() } - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) } func TestFrameTimerAlt(t *testing.T) { @@ -51,9 +51,9 @@ func TestFrameTimerAlt(t *testing.T) { end Nox.Timer(Nox.Frames(1), foo) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) g.Tick() - require.Equal(t, float32(1), v.pos.X) + must.EqOp(t, float32(1), v.pos.X) } func TestFrameTimerArg(t *testing.T) { @@ -66,9 +66,9 @@ func TestFrameTimerArg(t *testing.T) { end Nox.FrameTimer(1, foo, v, 2) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) g.Tick() - require.Equal(t, float32(2), v.pos.X) + must.EqOp(t, float32(2), v.pos.X) } func TestFrameTimerAltArg(t *testing.T) { @@ -81,9 +81,9 @@ func TestFrameTimerAltArg(t *testing.T) { end Nox.Timer(Nox.Frames(1), foo, v, 2) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) g.Tick() - require.Equal(t, float32(2), v.pos.X) + must.EqOp(t, float32(2), v.pos.X) } func TestSecondTimer(t *testing.T) { @@ -96,11 +96,11 @@ func TestSecondTimer(t *testing.T) { end Nox.SecondTimer(1, foo) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) for i := 0; i < 31; i++ { g.Tick() } - require.Equal(t, float32(1), v.pos.X) + must.EqOp(t, float32(1), v.pos.X) } func TestSecondTimerStop(t *testing.T) { @@ -113,14 +113,14 @@ func TestSecondTimerStop(t *testing.T) { end t = Nox.SecondTimer(1, foo) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) g.Exec(` t:Stop() `) for i := 0; i < 31*2; i++ { g.Tick() } - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) } func TestSecondTimerAlt(t *testing.T) { @@ -133,11 +133,11 @@ func TestSecondTimerAlt(t *testing.T) { end Nox.Timer(Nox.Sec(1), foo) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) for i := 0; i < 31; i++ { g.Tick() } - require.Equal(t, float32(1), v.pos.X) + must.EqOp(t, float32(1), v.pos.X) } func TestSecondTimerArg(t *testing.T) { @@ -150,11 +150,11 @@ func TestSecondTimerArg(t *testing.T) { end Nox.SecondTimer(1, foo, v, 2) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) for i := 0; i < 31; i++ { g.Tick() } - require.Equal(t, float32(2), v.pos.X) + must.EqOp(t, float32(2), v.pos.X) } func TestSecondTimerAltArg(t *testing.T) { @@ -167,9 +167,9 @@ func TestSecondTimerAltArg(t *testing.T) { end Nox.Timer(Nox.Sec(1), foo, v, 2) `) - require.Equal(t, float32(0), v.pos.X) + must.EqOp(t, float32(0), v.pos.X) for i := 0; i < 31; i++ { g.Tick() } - require.Equal(t, float32(2), v.pos.X) + must.EqOp(t, float32(2), v.pos.X) } diff --git a/script/lua/mapv0/unit_test.go b/script/lua/mapv0/unit_test.go index 340afb3..f0f8d88 100644 --- a/script/lua/mapv0/unit_test.go +++ b/script/lua/mapv0/unit_test.go @@ -5,7 +5,7 @@ import ( "testing" ns4 "github.com/noxworld-dev/noxscript/ns/v4" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/script" "github.com/noxworld-dev/opennox-lib/spell" @@ -311,8 +311,8 @@ func TestUnitSetPos(t *testing.T) { v2.x = v2.x + 1 v2.y = v2.y + 2 `) - require.Equal(t, types.Pointf{X: 3, Y: 4}, obj1.pos) - require.Equal(t, types.Pointf{X: 8, Y: 10}, obj2.pos) + must.EqOp(t, types.Pointf{X: 3, Y: 4}, obj1.pos) + must.EqOp(t, types.Pointf{X: 8, Y: 10}, obj2.pos) } func TestUnitDelete(t *testing.T) { @@ -323,7 +323,7 @@ func TestUnitDelete(t *testing.T) { local v = Nox.Object("Test") v:Delete() `) - require.True(t, v.deleted) + must.True(t, v.deleted) } func TestUnitDestroy(t *testing.T) { @@ -334,19 +334,19 @@ func TestUnitDestroy(t *testing.T) { v = Nox.Object("Test") v:Destroy() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false g.Exec(` v:Break() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false g.Exec(` v:Kill() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false } @@ -367,12 +367,12 @@ func TestUnitEnabled(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v.enabled = not v.enabled `) - require.True(t, v.enabled) + must.True(t, v.enabled) } func TestUnitToggle(t *testing.T) { @@ -392,12 +392,12 @@ func TestUnitToggle(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v:Toggle() `) - require.True(t, v.enabled) + must.True(t, v.enabled) } func TestUnitOwner(t *testing.T) { @@ -409,29 +409,29 @@ func TestUnitOwner(t *testing.T) { v1 = Nox.Object("Test") v2 = Nox.Object("Test2"):SetOwner(v1) `) - require.Equal(t, obj1, obj2.owner) + must.Eq[script.Object](t, obj1, obj2.owner) g.Exec(` v2:SetOwner(nil) `) - require.Nil(t, obj2.owner) + must.Eq(t, nil, obj2.owner) g.Exec(` v2.owner = v1 `) - require.Equal(t, obj1, obj2.owner) + must.Eq[script.Object](t, obj1, obj2.owner) g.Exec(` v2.owner = nil `) - require.Nil(t, obj2.owner) + must.Eq(t, nil, obj2.owner) g.Exec(` v2.owner = v1 v1.owner = v2.owner `) - require.Equal(t, obj1, obj2.owner) - require.Equal(t, obj1, obj1.owner) + must.Eq[script.Object](t, obj1, obj2.owner) + must.Eq[script.Object](t, obj1, obj1.owner) } func TestUnitFreeze(t *testing.T) { @@ -442,17 +442,17 @@ func TestUnitFreeze(t *testing.T) { v = Nox.Object("Test") v:Freeze() `) - require.True(t, v.frozen) + must.True(t, v.frozen) g.Exec(` v:Freeze(false) `) - require.False(t, v.frozen) + must.False(t, v.frozen) g.Exec(` v:Freeze(true) `) - require.True(t, v.frozen) + must.True(t, v.frozen) } func TestUnitHealth(t *testing.T) { @@ -473,13 +473,13 @@ func TestUnitHealth(t *testing.T) { v.health = 1 `) - require.Equal(t, 1, v.health.cur) + must.EqOp(t, 1, v.health.cur) g.Exec(` v.max_health = 10 `) - require.Equal(t, 10, v.health.cur) - require.Equal(t, 10, v.health.max) + must.EqOp(t, 10, v.health.cur) + must.EqOp(t, 10, v.health.max) } func TestUnitMana(t *testing.T) { @@ -500,13 +500,13 @@ func TestUnitMana(t *testing.T) { v.mana = 1 `) - require.Equal(t, 1, v.mana.cur) + must.EqOp(t, 1, v.mana.cur) g.Exec(` v.max_mana = 10 `) - require.Equal(t, 10, v.mana.cur) - require.Equal(t, 10, v.mana.max) + must.EqOp(t, 10, v.mana.cur) + must.EqOp(t, 10, v.mana.max) } func TestUnitActions(t *testing.T) { @@ -518,7 +518,7 @@ func TestUnitActions(t *testing.T) { v1 = Nox.Object("Test") v2 = Nox.Object("Test2") `) - require.Equal(t, UnitIdle, obj1.st) + must.EqOp(t, UnitIdle, obj1.st) for _, c := range []struct { name string @@ -537,7 +537,7 @@ func TestUnitActions(t *testing.T) { `, c.name, )) - require.Equal(t, c.st, obj1.st) + must.EqOp(t, c.st, obj1.st) }) } @@ -561,8 +561,8 @@ func TestUnitActions(t *testing.T) { `, c.name, )) - require.Equal(t, c.st, obj1.st) - require.Equal(t, types.Pointf{1, 2}, obj1.targ) + must.EqOp(t, c.st, obj1.st) + must.EqOp(t, types.Pointf{1, 2}, obj1.targ) } g.Exec(fmt.Sprintf(` @@ -571,8 +571,8 @@ func TestUnitActions(t *testing.T) { `, c.name, )) - require.Equal(t, c.st, obj1.st) - require.Equal(t, obj2.pos, obj1.targ) + must.EqOp(t, c.st, obj1.st) + must.EqOp(t, obj2.pos, obj1.targ) }) } } @@ -589,27 +589,27 @@ func TestUnitCast(t *testing.T) { error("can't cast") end `) - require.Equal(t, spell.SPELL_BURN, v.spell.id) - require.Equal(t, 3, v.spell.lvl) - require.Equal(t, v.targ, types.Pointf{1, 2}) + must.EqOp(t, spell.SPELL_BURN, v.spell.id) + must.EqOp(t, 3, v.spell.lvl) + must.EqOp(t, v.targ, types.Pointf{1, 2}) g.Exec(` if not v:Cast("CHARM", 2, v2) then error("can't cast") end `) - require.Equal(t, spell.SPELL_CHARM, v.spell.id) - require.Equal(t, 2, v.spell.lvl) - require.Equal(t, v.targ, types.Pointf{4, 5}) + must.EqOp(t, spell.SPELL_CHARM, v.spell.id) + must.EqOp(t, 2, v.spell.lvl) + must.EqOp(t, v.targ, types.Pointf{4, 5}) g.Exec(` if not v:Cast("HASTE", 1, null) then error("can't cast") end `) - require.Equal(t, spell.SPELL_HASTE, v.spell.id) - require.Equal(t, 1, v.spell.lvl) - require.Equal(t, v.targ, types.Pointf{}) + must.EqOp(t, spell.SPELL_HASTE, v.spell.id) + must.EqOp(t, 1, v.spell.lvl) + must.EqOp(t, v.targ, types.Pointf{}) } // TODO: test unit group diff --git a/script/lua/mapv0/wall_test.go b/script/lua/mapv0/wall_test.go index ec8ca46..d76a000 100644 --- a/script/lua/mapv0/wall_test.go +++ b/script/lua/mapv0/wall_test.go @@ -5,7 +5,7 @@ import ( "image" "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/wall" @@ -161,19 +161,19 @@ func TestWallDestroy(t *testing.T) { v = Nox.Wall(1, 2) v:Destroy() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false g.Exec(` v:Break() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false g.Exec(` v:Kill() `) - require.True(t, v.dead) + must.True(t, v.dead) v.dead = false } @@ -194,12 +194,12 @@ func TestWallEnabled(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v.enabled = not v.enabled `) - require.True(t, v.enabled) + must.True(t, v.enabled) } func TestWallToggle(t *testing.T) { @@ -219,10 +219,10 @@ func TestWallToggle(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v:Toggle() `) - require.True(t, v.enabled) + must.True(t, v.enabled) } diff --git a/script/lua/mapv0/waypoint_test.go b/script/lua/mapv0/waypoint_test.go index 4b00ebe..b5fef6e 100644 --- a/script/lua/mapv0/waypoint_test.go +++ b/script/lua/mapv0/waypoint_test.go @@ -3,7 +3,7 @@ package mapv0_test import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "github.com/noxworld-dev/opennox-lib/script" "github.com/noxworld-dev/opennox-lib/types" @@ -121,8 +121,8 @@ func TestWaypointSetPos(t *testing.T) { v2.x = v2.x + 1 v2.y = v2.y + 2 `) - require.Equal(t, types.Pointf{X: 3, Y: 4}, obj1.pos) - require.Equal(t, types.Pointf{X: 8, Y: 10}, obj2.pos) + must.EqOp(t, types.Pointf{X: 3, Y: 4}, obj1.pos) + must.EqOp(t, types.Pointf{X: 8, Y: 10}, obj2.pos) } func TestWaypointEnabled(t *testing.T) { @@ -142,12 +142,12 @@ func TestWaypointEnabled(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v.enabled = not v.enabled `) - require.True(t, v.enabled) + must.True(t, v.enabled) } func TestWaypointToggle(t *testing.T) { @@ -167,10 +167,10 @@ func TestWaypointToggle(t *testing.T) { error("not disabled") end `) - require.False(t, v.enabled) + must.False(t, v.enabled) g.Exec(` v:Toggle() `) - require.True(t, v.enabled) + must.True(t, v.enabled) } diff --git a/script/lua/vm_test.go b/script/lua/vm_test.go index 07d4a44..2afb9da 100644 --- a/script/lua/vm_test.go +++ b/script/lua/vm_test.go @@ -7,7 +7,7 @@ import ( ) func TestLUA(t *testing.T) { - vm := NewVM(scripttest.Game{T: t}, "") + vm := NewVM(&scripttest.Game{T: t}, "") _, err := vm.Exec(` Nox = require("Nox.Map.Script.v0") print(Nox) diff --git a/script/scripttest/scripttest.go b/script/scripttest/scripttest.go index d04aac6..3bd1530 100644 --- a/script/scripttest/scripttest.go +++ b/script/scripttest/scripttest.go @@ -1,7 +1,10 @@ package scripttest import ( + "bytes" + "fmt" "image" + "io" "testing" "time" @@ -107,101 +110,106 @@ func (v *Object) Delete() { type testPrinter struct { t testing.TB lvl string + w io.Writer } func (p testPrinter) Print(text string) { + if p.w != nil { + fmt.Fprintf(p.w, "%s: %s", p.lvl, text) + } p.t.Logf("%s: %s", p.lvl, text) } type Game struct { - T testing.TB + T testing.TB + Log bytes.Buffer } -func (g Game) BlindPlayers(blind bool) { +func (g *Game) BlindPlayers(blind bool) { panic("implement me") } -func (g Game) CinemaPlayers(v bool) { +func (g *Game) CinemaPlayers(v bool) { panic("implement me") } -func (g Game) OnPlayerJoin(fnc func(p script.Player)) { +func (g *Game) OnPlayerJoin(fnc func(p script.Player)) { panic("implement me") } -func (g Game) OnPlayerLeave(fnc func(p script.Player)) { +func (g *Game) OnPlayerLeave(fnc func(p script.Player)) { panic("implement me") } -func (g Game) ObjectGroupByID(id string) *script.ObjectGroup { +func (g *Game) ObjectGroupByID(id string) *script.ObjectGroup { panic("implement me") } -func (g Game) WaypointGroupByID(id string) *script.WaypointGroup { +func (g *Game) WaypointGroupByID(id string) *script.WaypointGroup { panic("implement me") } -func (g Game) WallAt(pos types.Pointf) script.Wall { +func (g *Game) WallAt(pos types.Pointf) script.Wall { panic("implement me") } -func (g Game) WallNear(pos types.Pointf) script.Wall { +func (g *Game) WallNear(pos types.Pointf) script.Wall { panic("implement me") } -func (g Game) WallAtGrid(pos image.Point) script.Wall { +func (g *Game) WallAtGrid(pos image.Point) script.Wall { panic("implement me") } -func (g Game) WallGroupByID(id string) *script.WallGroup { +func (g *Game) WallGroupByID(id string) *script.WallGroup { panic("implement me") } -func (g Game) Console(error bool) script.Printer { +func (g *Game) Console(error bool) script.Printer { lvl := "info" if error { lvl = "error" } - return testPrinter{t: g.T, lvl: lvl} + return testPrinter{t: g.T, lvl: lvl, w: &g.Log} } -func (g Game) Frame() int { +func (g *Game) Frame() int { return 1 } -func (g Game) Time() time.Duration { +func (g *Game) Time() time.Duration { return time.Second } -func (g Game) Players() []script.Player { +func (g *Game) Players() []script.Player { panic("implement me") } -func (g Game) HostPlayer() script.Player { +func (g *Game) HostPlayer() script.Player { panic("implement me") } -func (g Game) WaypointByID(id string) script.Waypoint { +func (g *Game) WaypointByID(id string) script.Waypoint { panic("implement me") } -func (g Game) WallByPos(pos image.Point) script.Wall { +func (g *Game) WallByPos(pos image.Point) script.Wall { panic("implement me") } -func (g Game) AudioEffect(name string, pos script.Positioner) { +func (g *Game) AudioEffect(name string, pos script.Positioner) { panic("implement me") } -func (g Game) Global() script.Printer { +func (g *Game) Global() script.Printer { return testPrinter{t: g.T, lvl: "global"} } -func (g Game) ObjectTypeByID(id string) script.ObjectType { +func (g *Game) ObjectTypeByID(id string) script.ObjectType { return nil } -func (g Game) ObjectByID(id string) script.Object { +func (g *Game) ObjectByID(id string) script.Object { switch id { case "Frog": return &Object{PosVal: types.Pointf{1, 2}, IDVal: id} diff --git a/things/thing_test.go b/things/thing_test.go index a9a86a0..83809c6 100644 --- a/things/thing_test.go +++ b/things/thing_test.go @@ -3,10 +3,10 @@ package things import ( "testing" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestThingFixAttrs(t *testing.T) { arr := fixThingAttrs("MASS = 6 DESTROY = DefaultDestroy") - require.Equal(t, []string{"MASS = 6", "DESTROY = DefaultDestroy"}, arr) + must.Eq(t, []string{"MASS = 6", "DESTROY = DefaultDestroy"}, arr) }