TestFory tests the thread-safe Fory wrapper
(t *testing.T)
| 26 | |
| 27 | // TestFory tests the thread-safe Fory wrapper |
| 28 | func TestFory(t *testing.T) { |
| 29 | f := New(fory.WithXlang(false), fory.WithRefTracking(true), fory.WithCompatible(false)) |
| 30 | |
| 31 | t.Run("BasicSerialization", func(t *testing.T) { |
| 32 | data, err := f.Serialize(int32(42)) |
| 33 | require.NoError(t, err) |
| 34 | |
| 35 | var result int32 |
| 36 | err = f.Deserialize(data, &result) |
| 37 | require.NoError(t, err) |
| 38 | require.Equal(t, int32(42), result) |
| 39 | }) |
| 40 | |
| 41 | t.Run("GenericSerialization", func(t *testing.T) { |
| 42 | val := "hello world" |
| 43 | data, err := Serialize(f, &val) |
| 44 | require.NoError(t, err) |
| 45 | |
| 46 | var result string |
| 47 | err = Deserialize(f, data, &result) |
| 48 | require.NoError(t, err) |
| 49 | require.Equal(t, "hello world", result) |
| 50 | }) |
| 51 | |
| 52 | t.Run("ConcurrentAccess", func(t *testing.T) { |
| 53 | done := make(chan bool, 10) |
| 54 | for i := 0; i < 10; i++ { |
| 55 | go func(val int32) { |
| 56 | data, err := f.Serialize(val) |
| 57 | require.NoError(t, err) |
| 58 | |
| 59 | var result int32 |
| 60 | err = f.Deserialize(data, &result) |
| 61 | require.NoError(t, err) |
| 62 | require.Equal(t, val, result) |
| 63 | done <- true |
| 64 | }(int32(i)) |
| 65 | } |
| 66 | for i := 0; i < 10; i++ { |
| 67 | <-done |
| 68 | } |
| 69 | }) |
| 70 | |
| 71 | t.Run("ConcurrentGenericAccess", func(t *testing.T) { |
| 72 | done := make(chan bool, 10) |
| 73 | for i := 0; i < 10; i++ { |
| 74 | go func(val int64) { |
| 75 | data, err := Serialize(f, &val) |
| 76 | require.NoError(t, err) |
| 77 | |
| 78 | var result int64 |
| 79 | err = Deserialize(f, data, &result) |
| 80 | require.NoError(t, err) |
| 81 | require.Equal(t, val, result) |
| 82 | done <- true |
| 83 | }(int64(i * 1000)) |
| 84 | } |
| 85 | for i := 0; i < 10; i++ { |
nothing calls this directly
no test coverage detected