summaryrefslogtreecommitdiff
path: root/projects/12/StringTest/Main.jack
blob: 28485483ac35677eb7a3ca63a12ee6b7d605ac55 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/12/StringTest/Main.jack

/** Test program for the OS String class. */
class Main {

    /** Performs various string manipulations and displays their results. */
    function void main() {
        var String s;
        var String i;
        
        let s = String.new(0); // a zero-capacity string should be supported
        do s.dispose();

        let s = String.new(6); // capacity 6, make sure that length 5 is displayed
        let s = s.appendChar(97);
        let s = s.appendChar(98);
        let s = s.appendChar(99);
        let s = s.appendChar(100);
        let s = s.appendChar(101);
        do Output.printString("new,appendChar: ");
        do Output.printString(s);                // new, appendChar: abcde
        do Output.println();
    
        let i = String.new(6);
        do i.setInt(12345);
        do Output.printString("setInt: ");
        do Output.printString(i);                // setInt: 12345
        do Output.println();

        do i.setInt(-32767);
        do Output.printString("setInt: ");
        do Output.printString(i);                // setInt: -32767
        do Output.println();
        
        do Output.printString("length: ");
        do Output.printInt(s.length());          // length: 5
        do Output.println();
        
        do Output.printString("charAt[2]: ");
        do Output.printInt(s.charAt(2));         // charAt[2]: 99
        do Output.println();
        
        do s.setCharAt(2, 45);
        do Output.printString("setCharAt(2,'-'): ");     
        do Output.printString(s);                // setCharAt(2,'-'): ab-de
        do Output.println();
        
        do s.eraseLastChar();        
        do Output.printString("eraseLastChar: ");     
        do Output.printString(s);                // eraseLastChar: ab-d
        do Output.println();
        
        let s = "456";
        do Output.printString("intValue: ");
        do Output.printInt(s.intValue());        // intValue: 456
        do Output.println();
        
        let s = "-32123";
        do Output.printString("intValue: ");
        do Output.printInt(s.intValue());        // intValue: -32123
        do Output.println();
        
        do Output.printString("backSpace: ");
        do Output.printInt(String.backSpace());  // backSpace: 129
        do Output.println();
        
        do Output.printString("doubleQuote: ");
        do Output.printInt(String.doubleQuote());// doubleQuote: 34
        do Output.println();
        
        do Output.printString("newLine: ");
        do Output.printInt(String.newLine());    // newLine: 128
        do Output.println();
        
        do i.dispose();
        do s.dispose();

        return;
    }
}