YREA-SLS/SLS_Tests/cases.yaml

1129 lines
19 KiB
YAML

# Kyler Olsen
# SLS Test Cases
# November 2025
# Could you now help me by creating test cases. Just start by naming any new categories I should have, then I will ask you to name new tests. Token strings should have their tokens listed with in their data
# - name: Test Name
# code: "Test Code"
# # Lexed tokens or lexer error
# tokens:
# - type: Token Type
# value: Token Value
# # Parsed operations or parsing error (if no lexer error)
# operations:
# - function: Operation Name
# # Final stack state and/or runtime error (if no lexer or parsing error)
# stack_final:
# - type: Stack Item Type
# value: Stack Item Value
# runtime_error:
# message: Error message.
- name: Empty_Statement
code: ""
tokens: []
operations: []
stack_final: []
# Basic Integers
- name: Integer Default Decimal 0
code: "0"
tokens:
- type: i64
value: 0
operations:
- function: push
type: i64
value: 0
stack_final:
- type: i64
value: 0
- name: Integer Default Decimal -1
code: "-1"
tokens:
- type: i64
value: -1
operations:
- function: push
type: i64
value: -1
stack_final:
- type: i64
value: -1
- name: Integer Default Decimal Leading Zeros
code: "00042"
tokens:
- type: i64
value: 42
operations:
- function: push
type: i64
value: 42
stack_final:
- type: i64
value: 42
- name: Integer Default Hex 0xFF
code: "0xFF"
tokens:
- type: i64
value: 255
operations:
- function: push
type: i64
value: 255
stack_final:
- type: i64
value: 255
- name: Integer Default Hex 0xdeadbeef
code: "0xdeadbeef"
tokens:
- type: i64
value: 3735928559
operations:
- function: push
type: i64
value: 3735928559
stack_final:
- type: i64
value: 3735928559
- name: Integer Default Binary 0b1010
code: "0b1010"
tokens:
- type: i64
value: 10
operations:
- function: push
type: i64
value: 10
stack_final:
- type: i64
value: 10
- name: Integer Default Octal 0o755
code: "0o755"
tokens:
- type: i64
value: 493
operations:
- function: push
type: i64
value: 493
stack_final:
- type: i64
value: 493
- name: Integer i8 Decimal 127
code: "127:i8"
tokens:
- type: i8
value: 127
operations:
- function: push
type: i8
value: 127
stack_final:
- type: i8
value: 127
- name: Integer i8 Decimal -128
code: "-128:i8"
tokens:
- type: i8
value: -128
operations:
- function: push
type: i8
value: -128
stack_final:
- type: i8
value: -128
- name: Integer u8 Decimal 255
code: "255:u8"
tokens:
- type: u8
value: 255
operations:
- function: push
type: u8
value: 255
stack_final:
- type: u8
value: 255
- name: Integer Default Decimal with Underscore
code: "1_000_000"
tokens:
- type: i64
value: 1000000
operations:
- function: push
type: i64
value: 1000000
stack_final:
- type: i64
value: 1000000
- name: Integer Default Decimal with Commas Invalid
code: "1,000,000"
tokens:
- type: error
value: "Invalid decimal literal: unexpected ',' in decimal integer."
- name: Integer i8 Overflow
code: "128:i8"
tokens:
- type: error
value: "Integer overflow: 128 exceeds range for i8."
- name: Integer i8 Underflow
code: "-129:i8"
tokens:
- type: error
value: "Integer underflow: -129 exceeds range for i8."
- name: Integer Default Invalid Characters
code: "12a3"
tokens:
- type: error
value: "Invalid decimal literal: unexpected 'a' in decimal integer."
- name: Integer Default Whitespace
code: " 42 "
tokens:
- type: i64
value: 42
operations:
- function: push
type: i64
value: 42
stack_final:
- type: i64
value: 42
- name: Integer Default Invalid Prefix
code: "0b2"
tokens:
- type: error
value: "Invalid binary literal: unexpected '2' in binary integer."
- name: Integer Default Underscore End
code: "42_"
tokens:
- type: i64
value: 42
operations:
- function: push
type: i64
value: 42
stack_final:
- type: i64
value: 42
- name: Integer Default Underscore Double
code: "4__2"
tokens:
- type: i64
value: 42
operations:
- function: push
type: i64
value: 42
stack_final:
- type: i64
value: 42
# Additional i64 (default) coverage
- name: Integer Default Decimal Max i64
code: "9223372036854775807"
tokens:
- type: i64
value: 9223372036854775807
operations:
- function: push
type: i64
value: 9223372036854775807
stack_final:
- type: i64
value: 9223372036854775807
- name: Integer Default Decimal Min i64
code: "-9223372036854775808"
tokens:
- type: i64
value: -9223372036854775808
operations:
- function: push
type: i64
value: -9223372036854775808
stack_final:
- type: i64
value: -9223372036854775808
- name: Integer Default Hex Max
code: "0x7FFFFFFFFFFFFFFF"
tokens:
- type: i64
value: 9223372036854775807
operations:
- function: push
type: i64
value: 9223372036854775807
stack_final:
- type: i64
value: 9223372036854775807
- name: Integer Default Binary All Ones
code: "0b1111111111111111"
tokens:
- type: i64
value: 65535
operations:
- function: push
type: i64
value: 65535
stack_final:
- type: i64
value: 65535
- name: Integer Default Octal Max Three Digits
code: "0o777"
tokens:
- type: i64
value: 511
operations:
- function: push
type: i64
value: 511
stack_final:
- type: i64
value: 511
# Explicit i64 coverage
- name: Integer i64 Decimal Positive
code: "42:i64"
tokens:
- type: i64
value: 42
operations:
- function: push
type: i64
value: 42
stack_final:
- type: i64
value: 42
- name: Integer i64 Hex
code: "0xFF:i64"
tokens:
- type: i64
value: 255
operations:
- function: push
type: i64
value: 255
stack_final:
- type: i64
value: 255
- name: Integer i64 Binary
code: "0b1010:i64"
tokens:
- type: i64
value: 10
operations:
- function: push
type: i64
value: 10
stack_final:
- type: i64
value: 10
- name: Integer i64 Octal
code: "0o755:i64"
tokens:
- type: i64
value: 493
operations:
- function: push
type: i64
value: 493
stack_final:
- type: i64
value: 493
- name: Integer i64 With Underscores
code: "1_000_000:i64"
tokens:
- type: i64
value: 1000000
operations:
- function: push
type: i64
value: 1000000
stack_final:
- type: i64
value: 1000000
- name: Integer i64 Max Value
code: "9223372036854775807:i64"
tokens:
- type: i64
value: 9223372036854775807
operations:
- function: push
type: i64
value: 9223372036854775807
stack_final:
- type: i64
value: 9223372036854775807
- name: Integer i64 Min Value
code: "-9223372036854775808:i64"
tokens:
- type: i64
value: -9223372036854775808
operations:
- function: push
type: i64
value: -9223372036854775808
stack_final:
- type: i64
value: -9223372036854775808
# i32 coverage
- name: Integer i32 Decimal Positive
code: "42:i32"
tokens:
- type: i32
value: 42
operations:
- function: push
type: i32
value: 42
stack_final:
- type: i32
value: 42
- name: Integer i32 Decimal Negative
code: "-100:i32"
tokens:
- type: i32
value: -100
operations:
- function: push
type: i32
value: -100
stack_final:
- type: i32
value: -100
- name: Integer i32 Hex
code: "0xABCD:i32"
tokens:
- type: i32
value: 43981
operations:
- function: push
type: i32
value: 43981
stack_final:
- type: i32
value: 43981
- name: Integer i32 Binary
code: "0b11110000:i32"
tokens:
- type: i32
value: 240
operations:
- function: push
type: i32
value: 240
stack_final:
- type: i32
value: 240
- name: Integer i32 Octal
code: "0o777:i32"
tokens:
- type: i32
value: 511
operations:
- function: push
type: i32
value: 511
stack_final:
- type: i32
value: 511
- name: Integer i32 Max Value
code: "2147483647:i32"
tokens:
- type: i32
value: 2147483647
operations:
- function: push
type: i32
value: 2147483647
stack_final:
- type: i32
value: 2147483647
- name: Integer i32 Min Value
code: "-2147483648:i32"
tokens:
- type: i32
value: -2147483648
operations:
- function: push
type: i32
value: -2147483648
stack_final:
- type: i32
value: -2147483648
- name: Integer i32 Overflow
code: "2147483648:i32"
tokens:
- type: error
value: "Integer overflow: 2147483648 exceeds range for i32."
- name: Integer i32 Underflow
code: "-2147483649:i32"
tokens:
- type: error
value: "Integer underflow: -2147483649 exceeds range for i32."
# i16 coverage
- name: Integer i16 Decimal Positive
code: "1000:i16"
tokens:
- type: i16
value: 1000
operations:
- function: push
type: i16
value: 1000
stack_final:
- type: i16
value: 1000
- name: Integer i16 Decimal Negative
code: "-1000:i16"
tokens:
- type: i16
value: -1000
operations:
- function: push
type: i16
value: -1000
stack_final:
- type: i16
value: -1000
- name: Integer i16 Hex
code: "0x1234:i16"
tokens:
- type: i16
value: 4660
operations:
- function: push
type: i16
value: 4660
stack_final:
- type: i16
value: 4660
- name: Integer i16 Binary
code: "0b1111111100000000:i16"
tokens:
- type: i16
value: 65280
operations:
- function: push
type: i16
value: 65280
stack_final:
- type: i16
value: 65280
- name: Integer i16 Octal
code: "0o1234:i16"
tokens:
- type: i16
value: 668
operations:
- function: push
type: i16
value: 668
stack_final:
- type: i16
value: 668
- name: Integer i16 Max Value
code: "32767:i16"
tokens:
- type: i16
value: 32767
operations:
- function: push
type: i16
value: 32767
stack_final:
- type: i16
value: 32767
- name: Integer i16 Min Value
code: "-32768:i16"
tokens:
- type: i16
value: -32768
operations:
- function: push
type: i16
value: -32768
stack_final:
- type: i16
value: -32768
- name: Integer i16 Overflow
code: "32768:i16"
tokens:
- type: error
value: "Integer overflow: 32768 exceeds range for i16."
- name: Integer i16 Underflow
code: "-32769:i16"
tokens:
- type: error
value: "Integer underflow: -32769 exceeds range for i16."
# i8 coverage (additional to existing)
- name: Integer i8 Hex
code: "0x7F:i8"
tokens:
- type: i8
value: 127
operations:
- function: push
type: i8
value: 127
stack_final:
- type: i8
value: 127
- name: Integer i8 Binary
code: "0b01111111:i8"
tokens:
- type: i8
value: 127
operations:
- function: push
type: i8
value: 127
stack_final:
- type: i8
value: 127
- name: Integer i8 Octal
code: "0o177:i8"
tokens:
- type: i8
value: 127
operations:
- function: push
type: i8
value: 127
stack_final:
- type: i8
value: 127
- name: Integer i8 Zero
code: "0:i8"
tokens:
- type: i8
value: 0
operations:
- function: push
type: i8
value: 0
stack_final:
- type: i8
value: 0
- name: Integer i8 Negative Hex
code: "-0x80:i8"
tokens:
- type: i8
value: -128
operations:
- function: push
type: i8
value: -128
stack_final:
- type: i8
value: -128
# u64 coverage
- name: Integer u64 Decimal
code: "42:u64"
tokens:
- type: u64
value: 42
operations:
- function: push
type: u64
value: 42
stack_final:
- type: u64
value: 42
- name: Integer u64 Hex
code: "0xFFFFFFFFFFFFFFFF:u64"
tokens:
- type: u64
value: 18446744073709551615
operations:
- function: push
type: u64
value: 18446744073709551615
stack_final:
- type: u64
value: 18446744073709551615
- name: Integer u64 Binary
code: "0b1010101010101010:u64"
tokens:
- type: u64
value: 43690
operations:
- function: push
type: u64
value: 43690
stack_final:
- type: u64
value: 43690
- name: Integer u64 Octal
code: "0o7777:u64"
tokens:
- type: u64
value: 4095
operations:
- function: push
type: u64
value: 4095
stack_final:
- type: u64
value: 4095
- name: Integer u64 Max Value
code: "18446744073709551615:u64"
tokens:
- type: u64
value: 18446744073709551615
operations:
- function: push
type: u64
value: 18446744073709551615
stack_final:
- type: u64
value: 18446744073709551615
- name: Integer u64 Zero
code: "0:u64"
tokens:
- type: u64
value: 0
operations:
- function: push
type: u64
value: 0
stack_final:
- type: u64
value: 0
- name: Integer u64 Overflow
code: "18446744073709551616:u64"
tokens:
- type: error
value: "Integer overflow: 18446744073709551616 exceeds range for u64."
- name: Integer u64 Negative Invalid
code: "-1:u64"
tokens:
- type: error
value: "Integer underflow: -1 exceeds range for u64."
# u32 coverage
- name: Integer u32 Decimal
code: "1000000:u32"
tokens:
- type: u32
value: 1000000
operations:
- function: push
type: u32
value: 1000000
stack_final:
- type: u32
value: 1000000
- name: Integer u32 Hex
code: "0xFFFFFFFF:u32"
tokens:
- type: u32
value: 4294967295
operations:
- function: push
type: u32
value: 4294967295
stack_final:
- type: u32
value: 4294967295
- name: Integer u32 Binary
code: "0b11111111000000001111111100000000:u32"
tokens:
- type: u32
value: 4278255360
operations:
- function: push
type: u32
value: 4278255360
stack_final:
- type: u32
value: 4278255360
- name: Integer u32 Octal
code: "0o37777777777:u32"
tokens:
- type: u32
value: 4294967295
operations:
- function: push
type: u32
value: 4294967295
stack_final:
- type: u32
value: 4294967295
- name: Integer u32 Max Value
code: "4294967295:u32"
tokens:
- type: u32
value: 4294967295
operations:
- function: push
type: u32
value: 4294967295
stack_final:
- type: u32
value: 4294967295
- name: Integer u32 Overflow
code: "4294967296:u32"
tokens:
- type: error
value: "Integer overflow: 4294967296 exceeds range for u32."
- name: Integer u32 Negative Invalid
code: "-1:u32"
tokens:
- type: error
value: "Integer underflow: -1 exceeds range for u32."
# u16 coverage
- name: Integer u16 Decimal
code: "50000:u16"
tokens:
- type: u16
value: 50000
operations:
- function: push
type: u16
value: 50000
stack_final:
- type: u16
value: 50000
- name: Integer u16 Hex
code: "0xFFFF:u16"
tokens:
- type: u16
value: 65535
operations:
- function: push
type: u16
value: 65535
stack_final:
- type: u16
value: 65535
- name: Integer u16 Binary
code: "0b1111111111111111:u16"
tokens:
- type: u16
value: 65535
operations:
- function: push
type: u16
value: 65535
stack_final:
- type: u16
value: 65535
- name: Integer u16 Octal
code: "0o177777:u16"
tokens:
- type: u16
value: 65535
operations:
- function: push
type: u16
value: 65535
stack_final:
- type: u16
value: 65535
- name: Integer u16 Max Value
code: "65535:u16"
tokens:
- type: u16
value: 65535
operations:
- function: push
type: u16
value: 65535
stack_final:
- type: u16
value: 65535
- name: Integer u16 Overflow
code: "65536:u16"
tokens:
- type: error
value: "Integer overflow: 65536 exceeds range for u16."
- name: Integer u16 Negative Invalid
code: "-1:u16"
tokens:
- type: error
value: "Integer underflow: -1 exceeds range for u16."
# u8 coverage (additional to existing)
- name: Integer u8 Hex
code: "0xFF:u8"
tokens:
- type: u8
value: 255
operations:
- function: push
type: u8
value: 255
stack_final:
- type: u8
value: 255
- name: Integer u8 Binary
code: "0b11111111:u8"
tokens:
- type: u8
value: 255
operations:
- function: push
type: u8
value: 255
stack_final:
- type: u8
value: 255
- name: Integer u8 Octal
code: "0o377:u8"
tokens:
- type: u8
value: 255
operations:
- function: push
type: u8
value: 255
stack_final:
- type: u8
value: 255
- name: Integer u8 Zero
code: "0:u8"
tokens:
- type: u8
value: 0
operations:
- function: push
type: u8
value: 0
stack_final:
- type: u8
value: 0
- name: Integer u8 Overflow
code: "256:u8"
tokens:
- type: error
value: "Integer overflow: 256 exceeds range for u8."
- name: Integer u8 Negative Invalid
code: "-1:u8"
tokens:
- type: error
value: "Integer underflow: -1 exceeds range for u8."
# Edge cases with underscores in different bases
- name: Integer Hex With Underscores
code: "0xDEAD_BEEF:i64"
tokens:
- type: i64
value: 3735928559
operations:
- function: push
type: i64
value: 3735928559
stack_final:
- type: i64
value: 3735928559
- name: Integer Binary With Underscores
code: "0b1111_0000_1010_0101:i32"
tokens:
- type: i32
value: 61605
operations:
- function: push
type: i32
value: 61605
stack_final:
- type: i32
value: 61605
- name: Integer Octal With Underscores
code: "0o7_7_7:i16"
tokens:
- type: i16
value: 511
operations:
- function: push
type: i16
value: 511
stack_final:
- type: i16
value: 511
# Zero in different bases
- name: Integer Default Hex Zero
code: "0x0"
tokens:
- type: i64
value: 0
operations:
- function: push
type: i64
value: 0
stack_final:
- type: i64
value: 0
- name: Integer Default Binary Zero
code: "0b0"
tokens:
- type: i64
value: 0
operations:
- function: push
type: i64
value: 0
stack_final:
- type: i64
value: 0
- name: Integer Default Octal Zero
code: "0o0"
tokens:
- type: i64
value: 0
operations:
- function: push
type: i64
value: 0
stack_final:
- type: i64
value: 0
# Basic Floats
# Basic Strings
# Basic Booleans
# Basic Identifiers
# Basic Identifier Literals
# Basic Arrays
# Basic Token Strings
# Stack Operations
# Arithmetic Operations
# Comparison Operations
# Logical Operations
# Bitwise Operations
# Function Definitions
# Lambda Functions
# Conditional Statements
# While Loops
# For Loops
# Match Statements
# Structs
# Unions
# Enums
# Array Operations
# Array Combinators
# Array Arithmetic
# Array Manipulation
# Type Inference
# Type Tuples
# Trait Definition
# Trait Implementation
# Trait Inheritance
# Stackable Trait
# Addable Trait
# Multiplyable Trait
# Exponentiable Trait
# Logarithmic Trait
# Number Trait
# Orderable Trait
# Equatable Trait
# Comparable Trait
# Logical Trait
# Bitwise Trait
# Sized Trait
# Selectable<T> Trait
# Sliceable Trait
# Concatenable Trait
# ArrayOf<T> Trait
# Iterable<T> Trait
# Convertible Trait
# Stringifiable Trait
# Parseable Trait
# String Trait
# Size Trait
# Identifier Trait
# Implementable Trait
# Generics
# Eval
# Std Lib IO
# Std Lib Strings
# Std Lib Type conversions
# Error Handling
# Reflection