Skip to content

Commit 8cd6258

Browse files
added refinements and a test file for PipedWriter
1 parent d93bd00 commit 8cd6258

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.example.pipedwriter;
2+
3+
import java.io.IOException;
4+
import java.io.PipedReader;
5+
6+
import liquidjava.specification.ExternalRefinementsFor;
7+
import liquidjava.specification.Refinement;
8+
import liquidjava.specification.StateRefinement;
9+
import liquidjava.specification.StateSet;
10+
11+
@ExternalRefinementsFor("java.io.PipedWriter")
12+
//@RefinementAlias("Index(int x) {x >= 0}")
13+
@StateSet({"unconnected", "connected", "broken", "closed"})
14+
public interface PipedWriterRefinements {
15+
@StateRefinement(to="connected(this)")
16+
public void PipedWriter(PipedReader snk)
17+
throws IOException;
18+
19+
@StateRefinement(to="unconnected(this)")
20+
public void PipedWriter();
21+
22+
@StateRefinement(from="unconnected(this)", to="connected(this)")
23+
public void connect(PipedReader snk)
24+
throws IOException;
25+
26+
@StateRefinement(from="connected(this)")
27+
public void write(@Refinement("c >= 0 && c <= 65535") int c)
28+
throws IOException;
29+
30+
@StateRefinement(from="connected(this)")
31+
public void write(char[] cbuf,
32+
@Refinement("off >= 0") int off,
33+
@Refinement("off >= 0") int len)
34+
throws IOException;
35+
36+
@StateRefinement(from="connected(this)")
37+
public void flush()
38+
throws IOException;
39+
40+
@StateRefinement(to="closed(this)")
41+
public void close()
42+
throws IOException;
43+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.example.pipedwriter;
2+
3+
import java.io.IOException;
4+
import java.io.PipedReader;
5+
import java.io.PipedWriter;
6+
7+
public class PipedWriterTest {
8+
void test1() throws IOException {
9+
PipedWriter p = new PipedWriter();
10+
PipedReader r = new PipedReader();
11+
p.connect(r);
12+
p.write('a');
13+
p.flush();
14+
p.close();
15+
r.close();
16+
}
17+
void test2() throws IOException {
18+
PipedReader r = new PipedReader();
19+
PipedWriter p = new PipedWriter(r);
20+
char [] arr = {'a', 'b', 'c'};
21+
p.write(arr, 1, 2);
22+
p.flush();
23+
p.close();
24+
r.close();
25+
}
26+
void testFail() throws IOException {
27+
PipedWriter p = new PipedWriter();
28+
PipedReader r = new PipedReader();
29+
p.flush();
30+
char [] arr = {'a', 'b', 'c'};
31+
p.write(arr, 2, 2);
32+
p.close();
33+
r.close();
34+
}
35+
}

0 commit comments

Comments
 (0)