diff --git a/core/util/util.go b/core/util/util.go index 661710a3d..33bfe2aa3 100644 --- a/core/util/util.go +++ b/core/util/util.go @@ -14,7 +14,6 @@ import ( log "github.com/sirupsen/logrus" "io/ioutil" "k8s.io/client-go/util/jsonpath" - "math/big" "math/rand" "net/http" "net/url" @@ -402,14 +401,11 @@ func jsonPath(query, toMatch string) interface{} { // Jsonpath library converts large int into a string with scientific notion, the following // reverts that process to avoid mismatching when using the jsonpath result for csv data lookup - // Handle large integers in scientific notation by converting back to big.Int - if isScientific(result) { - // If result is in scientific notation, try converting to a big.Int - bigInt := new(big.Int) - bigInt, success := bigIntFromString(result) - if success { - result = bigInt.String() // Convert back to string representation of the big integer - } + floatResult, err := strconv.ParseFloat(result, 64) + // if the string is a float and a whole number + if err == nil && floatResult == float64(int64(floatResult)) { + intResult := int(floatResult) + result = strconv.Itoa(intResult) } // convert to array data if applicable @@ -424,27 +420,6 @@ func jsonPath(query, toMatch string) interface{} { return arrayData } -// isScientific checks if a string is in scientific notation (e.g., "1.349599e+37") -func isScientific(value string) bool { - return strings.Contains(value, "e") || strings.Contains(value, "E") -} - -// bigIntFromString converts a string representing a number (potentially in scientific notation) to big.Int -func bigIntFromString(value string) (*big.Int, bool) { - // Parse the string as a big.Float to handle scientific notation - flt := new(big.Float) - flt, _, err := big.ParseFloat(value, 10, 0, big.ToNearestEven) - if err != nil { - return nil, false - } - - // Convert the big.Float to big.Int (rounding down) - bigInt := new(big.Int) - flt.Int(bigInt) - - return bigInt, true -} - func xPath(query, toMatch string) string { result, err := XpathExecution(query, toMatch) if err != nil { diff --git a/core/util/util_test.go b/core/util/util_test.go index 24f399676..ddc888014 100644 --- a/core/util/util_test.go +++ b/core/util/util_test.go @@ -234,27 +234,6 @@ func Test_CopyMap(t *testing.T) { Expect(newMap["second"]).To(Equal("2")) } -func Test_JsonPathMethod_WithBigFloatingNumber(t *testing.T) { - - RegisterTestingT(t) - res := jsonPath("$.registrant", `{"registrant":"13495985898986869898697879879987978978.12345566777"}`) - Expect(res).To(Equal("13495985898986869898697879879987978978.12345566777")) -} - -func Test_JsonPathMethod_WithBigIntegerNumber(t *testing.T) { - - RegisterTestingT(t) - res := jsonPath("$.registrant", `{"registrant":5553686208582}`) - Expect(res).To(Equal(5553686208582)) -} - -func Test_JsonPathMethod_WithWordContainingEe(t *testing.T) { - - RegisterTestingT(t) - res := jsonPath("$.registrant", `{"registrant":"ETest"}`) - Expect(res).To(Equal("ETest")) -} - func Test_Identical_ReturnsTrue_WithExactlySameArray(t *testing.T) { RegisterTestingT(t) first := [2]string{"q1", "q2"}