summary refs log tree commit diff stats
path: root/doc/pydoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/pydoc')
0 files changed, 0 insertions, 0 deletions
/pre>
30012350 ^
cec5ef31 ^
30012350 ^
cec5ef31 ^
5c058ad6 ^
bae22d72 ^



30012350 ^
cec5ef31 ^
30012350 ^
cec5ef31 ^
5c058ad6 ^


bae22d72 ^


30012350 ^
cec5ef31 ^
30012350 ^
cec5ef31 ^
1694f9a3 ^

30012350 ^




34ac52cb ^
30012350 ^
cec5ef31 ^
30012350 ^



cec5ef31 ^
bae22d72 ^
492fb278 ^






















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


                                   

                                                 
                       
                                            
                                          
                                       
                        
                                          
                           



                                     
                         
                                           
                        
                                          


                                                                


                                     
                         
                                       
                        
                                          

                                             




                                          
                                            
                                         
                                            



                                     
                                    
 






















                                                                        
# Tests for Mu's stream primitives.

fn test-stream {
  # - write an int to a stream, then read it back
  # step 1: initialize
  var s: (stream int 4)
  var s2/ecx: (addr stream int) <- address s
  var tmp/eax: boolean <- stream-empty? s2
  check tmp, "F - test-stream/empty?/0"
  tmp <- stream-full? s2
  check-not tmp, "F - test-stream/full?/0"
  # step 2: write to stream
  var x: int
  copy-to x, 0x34
  var x2/edx: (addr int) <- address x
  write-to-stream s2, x2
  tmp <- stream-empty? s2
  check-not tmp, "F - test-stream/empty?/1"
  tmp <- stream-full? s2
  check-not tmp, "F - test-stream/full?/1"
  # step 3: modify the value written (should make no difference)
  copy-to x, 0
  # step 4: read back
  var y: int
  var y2/ebx: (addr int) <- address y
  read-from-stream s2, y2
  tmp <- stream-empty? s2
  check tmp, "F - test-stream/empty?/2"
  tmp <- stream-full? s2
  check-not tmp, "F - test-stream/full?/2"
  # we read back what was written
  check-ints-equal y, 0x34, "F - test-stream"
}

fn test-stream-full {
  # write an int to a stream of capacity 1
  var s: (stream int 1)
  var s2/ecx: (addr stream int) <- address s
  var tmp/eax: boolean <- stream-full? s2
  check-not tmp, "F - test-stream-full?/pre"
  var x: int
  var x2/edx: (addr int) <- address x
  write-to-stream s2, x2
  tmp <- stream-full? s2
  check tmp, "F - test-stream-full?"
}

fn test-fake-input-buffered-file {
  var foo: (handle buffered-file)
  var foo-ah/eax: (addr handle buffered-file) <- address foo
  populate-buffered-file-containing "abc", foo-ah
  var foo-addr/eax: (addr buffered-file) <- lookup foo
  var s: (stream byte 0x100)
  var result/ecx: (addr stream byte) <- address s
  read-line-buffered foo-addr, result
  check-stream-equal result, "abc", "F - test-fake-input-buffered-file"
}

fn test-fake-output-buffered-file {
  var foo: (handle buffered-file)
  var foo-ah/eax: (addr handle buffered-file) <- address foo
  new-buffered-file foo-ah
  var foo-addr/eax: (addr buffered-file) <- lookup foo
  write-buffered foo-addr, "abc"
  var s: (stream byte 0x100)
  var result/ecx: (addr stream byte) <- address s
  read-line-buffered foo-addr, result
  check-stream-equal result, "abc", "F - test-fake-output-buffered-file"
}