Skip to main content

debug_test/
debug_test.rs

1use uxn_tal::{Assembler, AssemblerError};
2
3fn main() -> Result<(), AssemblerError> {
4    // Test 1: Character literals
5    println!("Testing character literals...");
6    let source1 = r#"
7        |0100
8        'A 'B 'C
9    "#;
10
11    let mut assembler = Assembler::new();
12    match assembler.assemble(source1, Some("debug_test.rs:char_lit".to_owned())) {
13        Ok(rom) => {
14            println!("Character test OK, ROM length: {}", rom.len());
15            println!(
16                "Bytes: {:02x} {:02x} {:02x}",
17                rom[0x100], rom[0x101], rom[0x102]
18            );
19        }
20        Err(e) => {
21            println!("Character test failed: {}", e);
22        }
23    }
24
25    // Test 2: Simple label reference
26    println!("\nTesting simple label reference...");
27    let source2 = r#"
28        |0100
29        ;data
30        @data #42
31    "#;
32
33    let mut assembler2 = Assembler::new();
34    match assembler2.assemble(source2, Some("debug_test.rs:simple_label".to_owned())) {
35        Ok(rom) => {
36            println!("Simple label test OK, ROM length: {}", rom.len());
37            println!("First 6 bytes:");
38            for (i, byte) in rom.iter().take(6).enumerate() {
39                println!("  [{:04x}] = {:02x}", 0x100 + i, byte);
40            }
41            // Symbol table printing removed (symbols() method does not exist)
42        }
43        Err(e) => {
44            println!("Simple label test failed: {}", e);
45        }
46    }
47
48    // Test 3: Label reference with instruction
49    println!("\nTesting label reference with instruction...");
50    let source3 = r#"
51        |0100 @start
52        ;data LDA2
53        BRK
54        @data #1234
55    "#;
56
57    let mut assembler3 = Assembler::new();
58    match assembler3.assemble(source3, Some("debug_test.rs:label_instr".to_owned())) {
59        Ok(rom) => {
60            println!("Label with instruction test OK, ROM length: {}", rom.len());
61            println!("First 8 bytes:");
62            for (i, byte) in rom.iter().take(8).enumerate() {
63                println!("  [{:04x}] = {:02x}", 0x100 + i, byte);
64            }
65            // Symbol table printing removed (symbols() method does not exist)
66        }
67        Err(e) => {
68            println!("Label with instruction test failed: {}", e);
69        }
70    }
71
72    Ok(())
73}