packages feed

eo-phi-normalizer-3.1.0: test/eo/phi/dataization.yaml

# The MIT License (MIT)

# Copyright (c) 2016-2024 Objectionary.com

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

title: Dataization tests
tests:
  - name: "Celsius example"
    dependencies:
      - ./data/0.50.0/org/eolang/number.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          c ↦ Φ̇.number(
            as-bytes ↦ Φ̇.bytes(
              ⟦ Δ ⤍ 40-39-00-00-00-00-00-00 ⟧
            )
          ),
          φ ↦ ξ.c.times(
            x ↦ ⟦
              Δ ⤍ 3F-FC-CC-CC-CC-CC-CC-CD
            ⟧
          ).plus(
            x ↦ ⟦
              Δ ⤍ 40-40-00-00-00-00-00-00
            ⟧
          )
        ⟧
      }
    output:
      object: "77.0"

  - name: "Equality of booleans (via equality of bytes)"
    dependencies:
      - ./data/0.50.0/org/eolang/bytes.phi
      - ./data/0.50.0/org/eolang/true.phi
      - ./data/0.50.0/org/eolang/false.phi
    input: |
      {
        ⟦
          φ ↦ Φ̇.true.eq(α0 ↦ Φ̇.true)
        ⟧
      }
    output:
      bytes: "01-"

  - name: "Program with ξ.ρ.ρ"
    dependencies: []
    input: |
      {
        ⟦
          x ↦ ⟦
            b ↦ ⟦
              Δ ⤍ 01-
            ⟧,
            φ ↦ ⟦
              b ↦ ⟦
                Δ ⤍ 02-
              ⟧,
              c ↦ ⟦
                a ↦ ξ.ρ.ρ.b,
                ρ ↦ ∅
              ⟧.a,
              ρ ↦ ∅
            ⟧.c,
            ρ ↦ ∅
          ⟧.φ,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ x ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  - name: "Preprocessing and dispatch"
    dependencies: []
    input: |
      {
        ⟦
          a ↦ ⟦
            b ↦ ⟦
              Δ ⤍ 01-
            ⟧
          ⟧.b,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ a ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  - name: "New values in copy through ξ"
    dependencies: []
    input: |
      {
        ⟦
          a ↦ ⟦
            b ↦ ∅,
            c ↦ ξ.b
          ⟧,
          d ↦ ξ.a(
            b ↦ ⟦
              Δ ⤍ 01-
            ⟧
          ).c,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ a ↦ ⟦ b ↦ ∅, c ↦ ξ.b ⟧, d ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  - name: "ρ-applications and stacked dispatches"
    dependencies: []
    input: |
      {
        ⟦
          x ↦ ⟦
            a ↦ ⟦
              b ↦ ⟦
                c ↦ ⟦
                  Δ ⤍ 01-
                ⟧
              ⟧
            ⟧
          ⟧.a.b.c,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ x ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  - name: "ρ-applications and immediate dispatches"
    dependencies: []
    input: |
      {
        ⟦
          x ↦ ⟦
            a ↦ ⟦
              b ↦ ⟦
                c ↦ ⟦
                  Δ ⤍ 01-
                ⟧
              ⟧.c
            ⟧.b
          ⟧.a,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ x ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  - name: "new values in copy through ρ"
    dependencies: []
    input: |
      {
        ⟦
          x ↦ ⟦
            a ↦ ⟦
              b ↦ ξ.ρ.c
            ⟧.b,
            c ↦ ∅
          ⟧,
          d ↦ ξ.x(
            c ↦ ⟦
              Δ ⤍ 01-
            ⟧
          ).a,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ x ↦ ⟦ a ↦ ⟦ b ↦ ξ.ρ.c ⟧.b, c ↦ ∅ ⟧, d ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  - name: "ρ and nested dispatches"
    dependencies: []
    input: |
      {
        ⟦
          x ↦ ⟦
            a ↦ ⟦
              b ↦ ⟦
                c ↦ ξ.ρ
              ⟧.c
            ⟧.b
          ⟧.a,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ x ↦ ⟦ b ↦ ⟦ c ↦ ξ.ρ ⟧.ρ, ρ ↦ ⟦ a ↦ ⟦ b ↦ ⟦ c ↦ ξ.ρ ⟧.ρ ⟧ ⟧ ⟧, λ ⤍ Package ⟧

  - name: "usage of Φ with a loop"
    dependencies: []
    input: |
      {
        ⟦
          a ↦ ⟦
            b ↦ Φ.a
          ⟧,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ a ↦ ⟦ b ↦ Φ.a ⟧, λ ⤍ Package ⟧

  - name: "ρ passed to both term of object application?"
    dependencies: []
    input: |
      {
        ⟦
          x ↦ ⟦
            c ↦ ⟦
              a ↦ ∅
            ⟧(
              a ↦ ⟦
                d ↦ ξ.ρ
              ⟧
            )
          ⟧.c,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ x ↦ ⟦
            a ↦ ⟦
              d ↦ ξ.ρ,
              ρ ↦ ⟦ c ↦ ⟦ a ↦ ∅ ⟧(a ↦ ⟦ d ↦ ξ.ρ ⟧) ⟧
            ⟧,
            ρ ↦ ⟦ c ↦ ⟦ a ↦ ∅ ⟧(a ↦ ⟦ d ↦ ξ.ρ ⟧) ⟧
          ⟧,
          λ ⤍ Package
        ⟧

  - name: "Object with ξ.ρ is an argument in application"
    dependencies: []
    input: |
      {
        ⟦
          a ↦ ⟦
            b ↦ ∅,
            x ↦ ⟦
              Δ ⤍ 01-
            ⟧
          ⟧(
            b ↦ ⟦
              c ↦ ξ.ρ.x
            ⟧
          ).b.c,
          x ↦ ⟦
            Δ ⤍ 02-
          ⟧,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ a ↦ ⟦ Δ ⤍ 02- ⟧, x ↦ ⟦ Δ ⤍ 02- ⟧, λ ⤍ Package ⟧

  # TODO #636:30min hangs
  # - name: "ξ in application"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ∅ ⟧(a ↦ ξ.b), b ↦ ⟦ Δ ⤍ 01- ⟧ , λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       ⟦ x ↦ ⟦
  #           a ↦ ⟦
  #             Δ ⤍ 01-,
  #             ρ ↦ ⟦
  #               b ↦ ⟦ Δ ⤍ 01- ⟧,
  #               x ↦ ⟦ a ↦ ∅ ⟧ (a ↦ ξ.b),
  #               λ ⤍ Package
  #             ⟧
  #           ⟧
  #         ⟧,
  #         b ↦ ⟦ Δ ⤍ 01- ⟧,
  #         λ ⤍ Package
  #       ⟧

  - name: "ξ chain"
    dependencies: []
    input: |
      {
        ⟦
          a ↦ ξ.b,
          b ↦ ξ.c,
          c ↦ ξ.d,
          d ↦ ⟦
            Δ ⤍ 01-
          ⟧,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦ a ↦ ⟦ Δ ⤍ 01- ⟧, b ↦ ⟦ Δ ⤍ 01- ⟧, c ↦ ⟦ Δ ⤍ 01- ⟧, d ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  # TODO #636:30min fails
  # - name: "cross-reference (1)"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ⟦ b ↦ ξ.ρ.d.e, c ↦ ⟦ Δ ⤍ 01- ⟧, ρ ↦ ∅ ⟧, d ↦ ⟦ e ↦ ξ.ρ.a.c, ρ ↦ ∅ ⟧, ρ ↦ ∅ ⟧.a.b , λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       NOT ⟦ x ↦ ⊥, λ ⤍ Package ⟧

  # TODO #636:30min fails
  # - name: "cross-reference (2)"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ⟦ b ↦ ξ.ρ.d.e, c ↦ ξ.ρ.d.f ⟧, d ↦ ⟦ e ↦ ξ.ρ.a.c, f ↦ ⟦ Δ ⤍ 01- ⟧ ⟧ ⟧.a.b , λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       NOT ⟦ x ↦ ⊥, λ ⤍ Package ⟧

  # TODO #636:30min fails
  # - name: "cross-reference + dispatch (1)"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ⟦ b ↦ ξ.ρ.d, c ↦ ⟦ Δ ⤍ 01- ⟧ ⟧, d ↦ ⟦ e ↦ ξ.ρ.a.c ⟧ ⟧.a.b.e , λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       NOT ⟦ x ↦ ⊥, λ ⤍ Package ⟧

  # TODO #636:30min fails
  # - name: "cross-reference + dispatch (1)"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ⟦ b ↦ ξ.ρ.d, c ↦ ⟦ Δ ⤍ 01- ⟧ ⟧, d ↦ ⟦ e ↦ ξ.ρ.a.c ⟧ ⟧.a.b.e , λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       NOT ⟦ x ↦ ⊥, λ ⤍ Package ⟧

  # TODO #636:30min fails
  # - name: "cross-reference + dispatch (2)"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ⟦ b ↦ ξ.ρ.d, c ↦ ξ.ρ.d.f ⟧, d ↦ ⟦ e ↦ ξ.ρ.a.c, f ↦ ⟦ Δ ⤍ 01- ⟧ ⟧ ⟧.a.b.e , λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       NOT ⟦ x ↦ ⊥, λ ⤍ Package ⟧

  # TODO #636:30min fails
  # - name: "cross-reference + dispatch (3)"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ⟦ b ↦ ξ.ρ.d, c ↦ ξ.ρ.d ⟧, d ↦ ⟦ e ↦ ξ.ρ.a.c, f ↦ ⟦ Δ ⤍ 01- ⟧ ⟧ ⟧.a.b.e.f , λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       NOT ⟦ x ↦ ⊥, λ ⤍ Package ⟧

  # TODO #636:30min fails
  # - name: "interleaving ρ and other dispatches"
  #   dependencies: []
  #   input: |
  #     {⟦ x ↦ ⟦ a ↦ ξ.ρ.b.ρ.c ⟧.a, b ↦ ⟦⟧, c ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧}
  #   output:
  #     object: |
  #       NOT ⟦ x ↦ ⟦ ⟧.ρ.b.ρ.c, b ↦ ⟦ ⟧, c ↦ ⟦ Δ ⤍ 01- ⟧, λ ⤍ Package ⟧

  - name: "Dataize in siblings of Package"
    dependencies:
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          org ↦ ⟦
            eolang ↦ ⟦
              bool ↦ ⟦
                α0 ↦ ∅,
                φ ↦ ξ.α0
              ⟧,
              x ↦ ⟦
                φ ↦ Φ̇.bool(
                  Φ̇.bytes(
                    ⟦ Δ ⤍ 01- ⟧
                  )
                )
              ⟧,
              z ↦ ⟦
                y ↦ ⟦
                  x ↦ ∅,
                  φ ↦ ξ.x
                ⟧,
                φ ↦ Φ̇.bool(
                  Φ̇.bytes(
                    ⟦ Δ ⤍ 01- ⟧
                  )
                )
              ⟧,
              λ ⤍ Package
            ⟧,
            λ ⤍ Package
          ⟧,
          λ ⤍ Package
        ⟧
      }
    output:
      object: |
        ⟦
          org ↦ ⟦
            eolang ↦ ⟦
              bool ↦ ⟦ α0 ↦ ∅, φ ↦ ξ.α0 ⟧,
              x ↦ ⟦ Δ ⤍ 01- ⟧,
              z ↦ ⟦ Δ ⤍ 01- ⟧,
              λ ⤍ Package
            ⟧,
            λ ⤍ Package
          ⟧,
          λ ⤍ Package
        ⟧

  - name: "int times and plus"
    dependencies:
      - ./data/0.50.0/org/eolang/i64.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            x ↦ ⟦
              x ↦ ⟦
                Δ ⤍ 09-
              ⟧,
              ρ ↦ ⟦
                Δ ⤍ 04-
              ⟧,
              λ ⤍ Lorg_eolang_int_times
            ⟧,
            ρ ↦ ⟦
              Δ ⤍ 06-
            ⟧,
            λ ⤍ Lorg_eolang_int_plus
          ⟧
        ⟧
      }
    output:
      object: "42"

  - name: "int greater than"
    dependencies:
      - ./data/0.50.0/org/eolang/i64.phi
      - ./data/0.50.0/org/eolang/bytes.phi
      - ./data/0.50.0/org/eolang/false.phi
      - ./data/0.50.0/org/eolang/true.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            ρ ↦ ⟦
              Δ ⤍ 06-
            ⟧,
            x ↦ ⟦
              Δ ⤍ 09-
            ⟧,
            λ ⤍ Lorg_eolang_int_gt
          ⟧
        ⟧
      }
    output:
      bytes: "00-"

  # TODO #636:30min Missing int tests: div

  - name: "bitwise and"
    dependencies:
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            b ↦ ⟦
              Δ ⤍ 15-
            ⟧,
            ρ ↦ ⟦
              Δ ⤍ 0D-
            ⟧,
            λ ⤍ Lorg_eolang_bytes_and
          ⟧
        ⟧
      }
    output:
      bytes: "00-00-00-00-00-00-00-05"

  - name: "bitwise not"
    dependencies:
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            ρ ↦ ⟦
              Δ ⤍ 50-3D-10-C0-6F-12-42-69
            ⟧,
            λ ⤍ Lorg_eolang_bytes_not
          ⟧
        ⟧
      }
    output:
      bytes: "AF-C2-EF-3F-90-ED-BD-96"

  - name: "bytes size"
    dependencies:
      - ./data/0.50.0/org/eolang/i64.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            ρ ↦ ⟦
              Δ ⤍ 00-11-22-33-44
            ⟧,
            λ ⤍ Lorg_eolang_bytes_size
          ⟧
        ⟧
      }
    output:
      bytes: "00-00-00-00-00-00-00-05"

  - name: "bytes shift and equal"
    dependencies:
      - ./data/0.50.0/org/eolang/bytes.phi
      - ./data/0.50.0/org/eolang/true.phi
      - ./data/0.50.0/org/eolang/i64.phi
      - ./data/0.50.0/org/eolang/false.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            ρ ↦ ⟦
              Δ ⤍ 02-24-46-68-8A-AC-CE-F1
            ⟧,
            b ↦ ⟦
              ρ ↦ ⟦
                Δ ⤍ 11-22-33-44-55-66-77-88
              ⟧,
              x ↦ 3,
              λ ⤍ Lorg_eolang_bytes_right
            ⟧,
            λ ⤍ Lorg_eolang_bytes_eq
          ⟧
        ⟧
      }
    output:
      bytes: "01-"

  # TODO #636:30min Missing bytes tests: or, xor, slice, concat

  - name: "float times and plus (raw bytes)"
    dependencies:
      - ./data/0.50.0/org/eolang/number.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            x ↦ ⟦
              x ↦ ⟦
                Δ ⤍ 40-14-00-00-00-00-00-00
              ⟧,
              ρ ↦ ⟦
                Δ ⤍ 40-2A-66-66-66-66-66-66
              ⟧,
              λ ⤍ Lorg_eolang_number_times
            ⟧,
            ρ ↦ ⟦
              Δ ⤍ 40-0B-5C-28-F5-C2-8F-5C
            ⟧,
            λ ⤍ Lorg_eolang_number_plus
          ⟧
        ⟧
      }
    output:
      object: "69.42"

  - name: "float times and plus"
    dependencies:
      - ./data/0.50.0/org/eolang/number.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            x ↦ ⟦
              x ↦ 5.0,
              ρ ↦ 13.2,
              λ ⤍ Lorg_eolang_number_times
            ⟧,
            ρ ↦ 3.42,
            λ ⤍ Lorg_eolang_number_plus
          ⟧
        ⟧
      }
    output:
      object: "69.42"

  # TODO #636:30min Missing float tests: gt, div

  - name: "string slice (raw bytes)"
    dependencies:
      - ./data/0.50.0/org/eolang/string.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            start ↦ ⟦
              Δ ⤍ 40-00-00-00-00-00-00-00
            ⟧,
            len ↦ ⟦
              Δ ⤍ 40-14-00-00-00-00-00-00
            ⟧,
            ρ ↦ ⟦
              Δ ⤍ 48-65-6C-6C-6F-20-77-6F-72-6C-64
            ⟧,
            λ ⤍ Lorg_eolang_string_slice
          ⟧
        ⟧
      }
    output:
      object: "\"llo w\""

  - name: "string slice"
    dependencies:
      - ./data/0.50.0/org/eolang/string.phi
      - ./data/0.50.0/org/eolang/i64.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            start ↦ 2.0,
            len ↦ 5.0,
            ρ ↦ "Hello world",
            λ ⤍ Lorg_eolang_string_slice
          ⟧
        ⟧
      }
    output:
      object: "\"llo w\""

  - name: "string length (raw bytes)"
    dependencies:
      - ./data/0.50.0/org/eolang/string.phi
      - ./data/0.50.0/org/eolang/i64.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            ρ ↦ ⟦
              Δ ⤍ 48-65-6C-6C-6F-20-77-6F-72-6C-64
            ⟧,
            λ ⤍ Lorg_eolang_string_length
          ⟧
        ⟧
      }
    output:
      object: "11" # == 11

  - name: "string length"
    dependencies:
      - ./data/0.50.0/org/eolang/string.phi
      - ./data/0.50.0/org/eolang/i64.phi
      - ./data/0.50.0/org/eolang/bytes.phi
    input: |
      {
        ⟦
          φ ↦ ⟦
            ρ ↦ "Hello world",
            λ ⤍ Lorg_eolang_string_length
          ⟧
        ⟧
      }
    output:
      object: "11" # == 11

  # TODO #636:30min Missing malloc tests: (all)

  # TODO #636:30min Missing cage tests: (all)

  # TODO #636:30min Missing io tests: (all)

  # TODO #636:30min Other missing tests: dataized, error, seq, as_phi, rust, try