# 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" runtime_error: message: "Integer overflow: 128 exceeds range for i8." - name: Integer i8 Underflow code: "-129:i8" runtime_error: message: "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 # 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 Trait # Sliceable Trait # Concatenable Trait # ArrayOf Trait # Iterable 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