| 1911 | } |
| 1912 | |
| 1913 | func TestIssue270(t *testing.T) { |
| 1914 | env := map[string]any{ |
| 1915 | "int8": int8(1), |
| 1916 | "int16": int16(3), |
| 1917 | "int32": int32(5), |
| 1918 | "int64": int64(7), |
| 1919 | "uint8": uint8(11), |
| 1920 | "uint16": uint16(13), |
| 1921 | "uint32": uint32(17), |
| 1922 | "uint64": uint64(19), |
| 1923 | "int8a": uint(23), |
| 1924 | "int8b": uint(29), |
| 1925 | "int16a": uint(31), |
| 1926 | "int16b": uint(37), |
| 1927 | "int32a": uint(41), |
| 1928 | "int32b": uint(43), |
| 1929 | "int64a": uint(47), |
| 1930 | "int64b": uint(53), |
| 1931 | "uint8a": uint(59), |
| 1932 | "uint8b": uint(61), |
| 1933 | "uint16a": uint(67), |
| 1934 | "uint16b": uint(71), |
| 1935 | "uint32a": uint(73), |
| 1936 | "uint32b": uint(79), |
| 1937 | "uint64a": uint(83), |
| 1938 | "uint64b": uint(89), |
| 1939 | "float32a": float32(97), |
| 1940 | "float32b": float32(101), |
| 1941 | "float64a": float64(103), |
| 1942 | "float64b": float64(107), |
| 1943 | } |
| 1944 | for _, each := range []struct { |
| 1945 | input string |
| 1946 | }{ |
| 1947 | {"int8 / int16"}, |
| 1948 | {"int32 / int64"}, |
| 1949 | {"uint8 / uint16"}, |
| 1950 | {"uint32 / uint64"}, |
| 1951 | {"int8 / uint64"}, |
| 1952 | {"int64 / uint8"}, |
| 1953 | {"int8a / int8b"}, |
| 1954 | {"int16a / int16b"}, |
| 1955 | {"int32a / int32b"}, |
| 1956 | {"int64a / int64b"}, |
| 1957 | {"uint8a / uint8b"}, |
| 1958 | {"uint16a / uint16b"}, |
| 1959 | {"uint32a / uint32b"}, |
| 1960 | {"uint64a / uint64b"}, |
| 1961 | {"float32a / float32b"}, |
| 1962 | {"float64a / float64b"}, |
| 1963 | } { |
| 1964 | p, err := expr.Compile(each.input, expr.Env(env)) |
| 1965 | require.NoError(t, err) |
| 1966 | |
| 1967 | out, err := expr.Run(p, env) |
| 1968 | require.NoError(t, err) |
| 1969 | require.IsType(t, float64(0), out) |
| 1970 | } |