(t *testing.T)
| 355 | } |
| 356 | |
| 357 | func TestSetFieldSerializationSchemaConsistent(t *testing.T) { |
| 358 | f := New(WithXlang(true), WithCompatible(false)) |
| 359 | err := f.RegisterStruct(SetFieldsStruct{}, 1001) |
| 360 | require.NoError(t, err, "register struct error") |
| 361 | |
| 362 | // Create test object with Set and Map fields |
| 363 | obj := SetFieldsStruct{ |
| 364 | SetField: NewSet[string](), |
| 365 | NullableSet: NewSet[string](), |
| 366 | MapField: map[string]bool{"key1": true, "key2": true}, |
| 367 | NullableMap: map[string]bool{"nk1": true}, |
| 368 | } |
| 369 | obj.SetField.Add("x", "y") |
| 370 | obj.NullableSet.Add("m", "n") |
| 371 | |
| 372 | // Serialize |
| 373 | data, err := f.Serialize(&obj) |
| 374 | require.NoError(t, err, "Serialize failed") |
| 375 | t.Logf("Serialized %d bytes", len(data)) |
| 376 | |
| 377 | // Deserialize |
| 378 | var result any |
| 379 | err = testDeserialize(t, f, data, &result) |
| 380 | require.NoError(t, err, "Deserialize failed") |
| 381 | |
| 382 | resultObj := result.(*SetFieldsStruct) |
| 383 | |
| 384 | // Verify SetField |
| 385 | require.Equal(t, 2, len(resultObj.SetField), "SetField length mismatch") |
| 386 | require.True(t, resultObj.SetField.Contains("x"), "SetField should contain 'x'") |
| 387 | require.True(t, resultObj.SetField.Contains("y"), "SetField should contain 'y'") |
| 388 | |
| 389 | // Verify NullableSet |
| 390 | require.Equal(t, 2, len(resultObj.NullableSet), "NullableSet length mismatch") |
| 391 | require.True(t, resultObj.NullableSet.Contains("m"), "NullableSet should contain 'm'") |
| 392 | require.True(t, resultObj.NullableSet.Contains("n"), "NullableSet should contain 'n'") |
| 393 | |
| 394 | // Verify MapField |
| 395 | require.Equal(t, 2, len(resultObj.MapField), "MapField length mismatch") |
| 396 | require.True(t, resultObj.MapField["key1"]) |
| 397 | require.True(t, resultObj.MapField["key2"]) |
| 398 | |
| 399 | // Verify NullableMap |
| 400 | require.Equal(t, 1, len(resultObj.NullableMap), "NullableMap length mismatch") |
| 401 | require.True(t, resultObj.NullableMap["nk1"]) |
| 402 | } |
| 403 | |
| 404 | func TestSetFieldSerializationCompatible(t *testing.T) { |
| 405 | f := New(WithXlang(true), WithCompatible(true)) |
nothing calls this directly
no test coverage detected