-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathio.feature
120 lines (110 loc) · 2.84 KB
/
io.feature
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Feature: I/O
Scenario: Read stdin
Given a file named "main.cloe" with:
"""
(print (read) . end "")
"""
And a file named "test.txt" with:
"""
foo
bar
baz
"""
When I run the following commands:
"""
cloe main.cloe < test.txt
"""
Then the stdout should contain exactly:
"""
foo
bar
baz
"""
Scenario: Read a file
Given a file named "main.cloe" with:
"""
(print (read . file "test.txt") . end "")
"""
And a file named "test.txt" with:
"""
foo
bar
baz
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly:
"""
foo
bar
baz
"""
Scenario: Print a string
Given a file named "main.cloe" with:
"""
(print "Hello!")
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly "Hello!"
Scenario: Print a string with end argument
Given a file named "main.cloe" with:
"""
(print "Hello!" . end "!!")
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly "Hello!!!"
Scenario: Print multiple strings
Given a file named "main.cloe" with:
"""
(print "Hello," "world!")
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly "Hello, world!"
Scenario: Print a number
Given a file named "main.cloe" with:
"""
(print 42)
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly "42"
Scenario: Print a nil
Given a file named "main.cloe" with:
"""
(print nil)
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly "nil"
Scenario: Print multiple arguments of different types
Given a file named "main.cloe" with:
"""
(print "string" 42 nil true)
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly "string 42 nil true"
Scenario: Print a string to stderr
Given a file named "main.cloe" with:
"""
(print "This is stderr." . file 2)
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly ""
And the stderr should contain exactly "This is stderr."
Scenario: Print a string to a file
Given a file named "main.cloe" with:
"""
(print "This is content." . file "output.txt")
"""
When I successfully run `cloe main.cloe`
Then the stdout should contain exactly ""
And the file "output.txt" should contain exactly:
"""
This is content.
"""
Scenario: Print with a wrong file argument
Given a file named "main.cloe" with:
"""
(print 42 . file nil)
"""
When I run `cloe main.cloe`
Then the exit status should not be 0
And the stdout should contain exactly ""
And the stderr should contain "Error"