package engine import ( "testing" ) // FuzzTypeConversion_ToString fuzz 测试 $toString func FuzzTypeConversion_ToString(f *testing.F) { engine := &AggregationEngine{} // 添加初始语料库 f.Add(float64(123)) f.Add(float64(-456)) f.Add(float64(0)) f.Add(float64(3.14159)) f.Fuzz(func(t *testing.T, value float64) { data := map[string]interface{}{"value": value} result := engine.toString("$value", data) // 验证返回非空字符串(除了 0) if result == "" && value != 0 { t.Errorf("toString(%v) returned empty string", value) } }) } // FuzzTypeConversion_ToInt fuzz 测试 $toInt func FuzzTypeConversion_ToInt(f *testing.F) { engine := &AggregationEngine{} f.Add(float64(123)) f.Add(float64(-456)) f.Add(float64(0)) f.Add(float64(99.99)) f.Fuzz(func(t *testing.T, value float64) { data := map[string]interface{}{"value": value} result := engine.toInt("$value", data) // 验证转换在合理范围内 expected := int32(value) if result != expected { t.Errorf("toInt(%v) = %d, want %d", value, result, expected) } }) } // FuzzBitwiseOps_BitAnd fuzz 测试位运算 AND func FuzzBitwiseOps_BitAnd(f *testing.F) { engine := &AggregationEngine{} f.Add(float64(12345), float64(67890)) f.Add(float64(0), float64(255)) f.Add(float64(-1), float64(1)) f.Fuzz(func(t *testing.T, a, b float64) { operand := []interface{}{a, b} data := map[string]interface{}{} result := engine.bitAnd(operand, data) // 验证结果合理性(位运算结果应在操作数范围内) maxVal := a if b > maxVal { maxVal = b } if result > int64(maxVal) && maxVal > 0 { t.Errorf("bitAnd(%v, %v) = %v exceeds max operand", a, b, result) } }) }