Edit

kc3-lang/kc3/test/ikc3/marshall.kc3

Branch :

  • test/ikc3/marshall.kc3
  • quote require Marshall
    require Marshall
    quote require MarshallRead
    require MarshallRead
    quote loopback = fn (tag) do
      str = Marshall.tag_to_str(tag)
      result = MarshallRead.tag_from_str(str)
      if (inspect(result) == inspect(tag)) do
        {:ok, Str.size(str)}
      else
        {:ko, Str.size(str), result}
      end
    end
    loopback = fn (tag) do
      str = Marshall.tag_to_str(tag)
      result = MarshallRead.tag_from_str(str)
      if (inspect(result) == inspect(tag)) do
        {:ok, Str.size(str)}
      else
        {:ko, Str.size(str), result}
      end
    end
    quote loopback(false)
    loopback(false)
    quote loopback(true)
    loopback(true)
    quote loopback('A')
    loopback('A')
    quote loopback('\0')
    loopback('\0')
    quote loopback('Z')
    loopback('Z')
    quote loopback(0)
    loopback(0)
    quote loopback(1)
    loopback(1)
    quote loopback(2)
    loopback(2)
    quote loopback(255)
    loopback(255)
    quote loopback(256)
    loopback(256)
    quote loopback(-1234)
    loopback(-1234)
    quote loopback(1234)
    loopback(1234)
    quote loopback(-123456789)
    loopback(-123456789)
    quote loopback(123456789)
    loopback(123456789)
    quote loopback((F32) 0.0)
    loopback((F32) 0.0)
    quote loopback((F32) 1.0)
    loopback((F32) 1.0)
    quote loopback((F64) 0.0)
    loopback((F64) 0.0)
    quote loopback((F64) 1.0)
    loopback((F64) 1.0)
    quote loopback((F128) 0.0)
    loopback((F128) 0.0)
    quote loopback((F128) 1.0)
    loopback((F128) 1.0)
    quote loopback("")
    loopback("")
    quote loopback("hello")
    loopback("hello")
    quote loopback("héllo wörld")
    loopback("héllo wörld")
    quote loopback([0, 1])
    loopback([0, 1])
    quote loopback([[2, 3], [4, 5]])
    loopback([[2, 3], [4, 5]])
    quote loopback(%Time{})
    loopback(%Time{})
    quote loopback((Ptr) 0)
    loopback((Ptr) 0)
    quote loopback(1 +i 2)
    loopback(1 +i 2)
    quote loopback(false)
    loopback(false)
    quote loopback(true)  
    loopback(true)
    quote loopback('0')
    loopback('0')
    quote loopback('z')
    loopback('z')
    quote loopback('\n')
    loopback('\n')
    quote loopback('\t')
    loopback('\t')
    quote loopback(255)
    loopback(255)
    quote loopback(127)
    loopback(127)
    quote loopback(128)
    loopback(128)
    quote loopback(-1)
    loopback(-1)
    quote loopback(-32768)
    loopback(-32768)
    quote loopback(32767)
    loopback(32767)
    quote loopback(65535)
    loopback(65535)
    quote loopback(-2147483648)
    loopback(-2147483648)
    quote loopback(2147483647)
    loopback(2147483647)
    quote loopback(4294967295)
    loopback(4294967295)
    quote loopback(-9223372036854775808)
    loopback(-9223372036854775808)
    quote loopback(9223372036854775807)
    loopback(9223372036854775807)
    quote loopback(18446744073709551615)
    loopback(18446744073709551615)
    quote loopback((Integer) 1024)
    loopback((Integer) 1024)
    quote loopback(10000000000000000000000000000000000)
    loopback(10000000000000000000000000000000000)
    quote loopback(123456789012345678901234567890)
    loopback(123456789012345678901234567890)
    quote loopback((F32) -1.0)
    loopback((F32) -1.0)
    quote loopback((F32) 3.141592)
    loopback((F32) 3.141592)
    quote loopback((F32) 4.294967e9)
    loopback((F32) 4.294967e9)
    quote loopback((F64) -1.0)
    loopback((F64) -1.0)
    quote loopback((F64) 3.14159265358979)
    loopback((F64) 3.14159265358979)
    quote loopback((F64) 4294967296.0)
    loopback((F64) 4294967296.0)
    quote loopback((F128) -1.0)
    loopback((F128) -1.0)
    quote loopback((F128) 3.1415926535897932384626433832795028841971693993751)
    loopback((F128) 3.1415926535897932384626433832795028841971693993751)
    quote loopback(2/6)
    loopback(2/6)
    quote loopback(1/3)
    loopback(1/3)
    quote loopback(22/7)
    loopback(22/7)
    quote loopback(0 +i 1)
    loopback(0 +i 1)
    quote loopback(-1 +i -2)
    loopback(-1 +i -2)
    quote loopback((F32) 3.14 +i (F32) 2.71)
    loopback((F32) 3.14 +i (F32) 2.71)
    #quote loopback("hello\xFF\x00world")
    #loopback("hello\xFF\x00world")
    #quote loopback("\xFF\xFE\xFD")
    #loopback("\xFF\xFE\xFD")
    quote loopback("test\ntab\there")
    loopback("test\ntab\there")
    quote loopback([])
    loopback([])
    quote loopback([1, 2, 3, 4, 5])
    loopback([1, 2, 3, 4, 5])
    quote loopback([true, false, 'A'])
    loopback([true, false, 'A'])
    quote loopback(["hello", "world"])
    loopback(["hello", "world"])
    quote loopback([[[1]]])
    loopback([[[1]]])
    quote loopback({1, 2, 3})
    loopback({1, 2, 3})
    quote loopback({true, 'A', "test"})
    loopback({true, 'A', "test"})
    quote loopback({1, 2, [3, 4]})
    loopback({1, 2, [3, 4]})
    quote loopback(do end)
    loopback(do end)
    quote loopback(Module)
    loopback(Module)
    quote loopback(:test)
    loopback(:test)
    quote loopback(:hello_world)
    loopback(:hello_world)
    quote loopback(%{})
    loopback(%{})
    quote loopback(%{a: 1, b: 2})
    loopback(%{a: 1, b: 2})
    quote loopback(%{key: "value", num: 42})
    loopback(%{key: "value", num: 42})
    quote loopback(%{nested: %{inner: true}})
    loopback(%{nested: %{inner: true}})
    quote loopback(%Time{tv_sec: 1000, tv_nsec: 2000})
    loopback(%Time{tv_sec: 1000, tv_nsec: 2000})
    quote loopback(%Time{tv_sec: 1 + 1, tv_nsec: 2 + 2})
    loopback(%Time{tv_sec: 1 + 1, tv_nsec: 2 + 2})
    quote loopback((Ptr) 0x0)
    loopback((Ptr) 0x0)
    quote loopback((PtrFree) 0x0)
    loopback((PtrFree) 0x0)
    #quote loopback(quote 1 + 1)
    #loopback(quote 1 + 1)
    #quote loopback(quote hello)
    #loopback(quote hello)
    #quote loopback(unquote(123))
    #loopback(unquote(123))
    quote loopback((U8) ?)
    loopback((U8) ?)
    quote loopback(?)
    loopback(?)
    quote loopback(fn (x) { x * 2 })
    loopback(fn (x) { x * 2 })
    quote loopback(fn (a, b) { a + b })
    loopback(fn (a, b) { a + b })
    quote loopback(List.reverse([]))
    loopback(List.reverse([]))
    quote loopback(a = 1)
    loopback(a = 1)
    quote loopback(defmodule Test do end)
    loopback(defmodule Test do end)
    quote loopback(do
      1
      2
      3
    end)
    loopback(do
      1
      2
      3
    end)
    quote loopback(cfn Tag "tag_add" (Tag, Tag, Result))
    loopback(cfn Tag "tag_add" (Tag, Tag, Result))
    quote loopback(%KC3.Op{sym: :-})
    loopback(%KC3.Op{sym: :-})
    quote loopback((U8[]) {})
    loopback((U8[]) {})
    quote loopback((U8[]) {0, 1, 2, 254, 255})
    loopback((U8[]) {0, 1, 2, 254, 255})
    quote loopback((U8[]) {0, 1 + 1, 2 + 2, 254, 255})
    loopback((U8[]) {0, 1 + 1, 2 + 2, 254, 255})
    quote loopback(do
      a = 1
      f = fn () { a } [a: 2]
      f()
    end)
    loopback(do
      a = 1
      f = fn () { a } [a: 2]
      f()
    end)
    quote loopback([[A, B], [C, D]])
    loopback([[A, B], [C, D]])