File: test_dune.py

package info (click to toggle)
sqlglot 28.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 14,672 kB
  • sloc: python: 84,517; sql: 22,534; makefile: 48
file content (36 lines) | stat: -rw-r--r-- 1,258 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from sqlglot import exp
from tests.dialects.test_dialect import Validator


class TestDune(Validator):
    dialect = "dune"

    def test_dune(self):
        self.validate_identity("CAST(x AS INT256)")
        self.validate_identity("CAST(x AS UINT256)")

        for hex_literal in (
            "deadbeef",
            "deadbeefdead",
            "deadbeefdeadbeef",
            "deadbeefdeadbeefde",
            "deadbeefdeadbeefdead",
            "deadbeefdeadbeefdeadbeef",
            "deadbeefdeadbeefdeadbeefdeadbeef",
        ):
            with self.subTest(f"Transpiling hex literal {hex_literal}"):
                self.parse_one(f"0x{hex_literal}").assert_is(exp.HexString)

                self.validate_all(
                    f"SELECT 0x{hex_literal}",
                    read={
                        "dune": f"SELECT X'{hex_literal}'",
                        "postgres": f"SELECT x'{hex_literal}'",
                        "trino": f"SELECT X'{hex_literal}'",
                    },
                    write={
                        "dune": f"SELECT 0x{hex_literal}",
                        "postgres": f"SELECT x'{hex_literal}'",
                        "trino": f"SELECT x'{hex_literal}'",
                    },
                )