cfad47cfa3/t3compiler/tads3/test/data/files_old.t

4b825dc642cb6eb9a060e54bf8d69288fbee4904cfad47cfa334b206c65f22086bcc5d63e6f70944
1
/*
2
 *   files.t - test of file I/O operations 
3
 */
4
5
#include "tads.h"
6
#include "t3.h"
7
8
9
_say_embed(str) { tadsSay(str); }
10
11
class RuntimeError: object
12
    construct(errno, ...) { errno_ = errno; }
13
    display = "Runtime Error: <<errno_>>"
14
    errno_ = 0
15
;
16
17
_main(args)
18
{
19
    try
20
    {
21
        t3SetSay(_say_embed);
22
        main();
23
    }
24
    catch (RuntimeError rte)
25
    {
26
        "\n<<rte.display>>\n";
27
    }
28
}
29
30
main()
31
{
32
    local fp;
33
    local i;
34
35
    /* -------------------------------------------------------------------- */
36
    /*
37
     *   text file
38
     */
39
40
    /* open a file */
41
    fp = fileOpen('test.txt', 'wt', 'us-ascii');
42
    if (fp == nil)
43
    {
44
        "Error opening file test.txt for writing\n";
45
        return;
46
    }
47
48
    /* write some data */
49
    for (i = 0 ; i < 100 ; ++i)
50
        fileWrite(fp, 'This is line ' + i + '!!!\n');
51
    fileWrite(fp, 'Some extended characters: '
52
           + '\u2039 \u2122 \u00A9 \u00AE \u203A\n');
53
54
    /* close the file */
55
    fileClose(fp);
56
57
    /* open the file for reading */
58
    fp = fileOpen('test.txt', 'rt', 'us-ascii');
59
    if (fp == nil)
60
    {
61
        "Error opening file test.txt for reading\n";
62
        return;
63
    }
64
65
    /* read the data */
66
    for (i = 0 ; ; ++i)
67
    {
68
        local val;
69
70
        val = fileRead(fp);
71
        if (val == nil)
72
            break;
73
        "<<i>>: <<val>>\n";
74
    }
75
76
    fileClose(fp);
77
78
    /* -------------------------------------------------------------------- */
79
    /*
80
     *   binary file
81
     */
82
83
    fp = fileOpen('test.bin', 'wb');
84
    if (fp == nil)
85
    {
86
        "Error opening file test.bin for writing\n";
87
        return;
88
    }
89
90
    /* write some data */
91
    for (i = 0 ; i <= 100 ; i += 20)
92
    {
93
        fileWrite(fp, i);
94
        fileWrite(fp, 'String ' + i);
95
    }
96
97
    fileClose(fp);
98
99
    /* open it for reading */
100
    fp = fileOpen('test.bin', 'rb');
101
    if (fp == nil)
102
    {
103
        "Error opening file test.bin for reading\n";
104
        return;
105
    }
106
107
    /* read the data back */
108
    for (i = 0 ; ; ++i)
109
    {
110
        local ival, sval;
111
        
112
        if ((ival = fileRead(fp)) == nil || (sval = fileRead(fp)) == nil)
113
            break;
114
115
        "<<i>>: type <<dataType(ival)>>, value '<<ival>>';
116
        type <<dataType(sval)>>, value '<<sval>>'\n";
117
    }
118
119
    fileClose(fp);
120
121
    /* open a file with a weird name */
122
    local fname = 'test\u00e4\u00eb\u00ef\u00f6\u00fc\u00ff.dat';
123
    "Opening <<fname>> (that's 'test' + 'aeiouy' with umlauts + '.dat')\n";
124
    fp = fileOpen(fname, 'wt', 'cp437');
125
    "fp = << fp == nil ? 'nil' : fp >>\n";
126
    fileWrite(fp, 'Hello there!\n');
127
    fileWrite(fp, 'Filename = ' + fname + '\n');
128
    fileClose(fp);
129
130
    "Done!\n";
131
}
132