samples/delegatingwriter/test/org/apidesign/delegatingwriter/BufferedWriterOnCDImageTest.java
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
2 package org.apidesign.delegatingwriter;
4 import java.io.BufferedWriter;
5 import java.io.IOException;
7 import static org.junit.Assert.*;
9 /** Emulates what goes wrong when one wants to process really large character
12 * @author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
14 public class BufferedWriterOnCDImageTest {
16 public BufferedWriterOnCDImageTest() {
20 public void testBehaviourOfRealBufferInJDKObviouslyThisIsGoingToThrowOutOfMemoryError() throws IOException {
21 if (Boolean.getBoolean("no.failures")) return;
22 // BEGIN: writer.countcd
23 CountingWriter writer = new CountingWriter();
24 CDSequence cdImage = new CDSequence();
25 BufferedWriter bufferedWriter = new BufferedWriter(writer);
26 bufferedWriter.append(cdImage);
28 "Correct number of writes delegated",
29 cdImage.length(), writer.getCharacterCount()
31 // END: writer.countcd
35 public void testBehaviourOfBufferThatDelegatesToAppend() throws IOException {
36 CountingWriter writer = new CountingWriter();
37 CDSequence cdImage = new CDSequence();
38 BufferedWriter bufferedWriter = new AltBufferedWriter(
39 writer, AltBufferedWriter.Behaviour.DELEGATE_TO_OUT
41 bufferedWriter.append(cdImage);
43 "Correct number of writes delegated",
45 writer.getCharacterCount()
50 public void testBehaviourWhenDelegatingConditionallyIsOK() throws IOException {
51 CountingWriter writer = new CountingWriter();
52 CDSequence cdImage = new CDSequence();
53 BufferedWriter bufferedWriter = new AltBufferedWriter(
54 writer, AltBufferedWriter.Behaviour.DELEGATE_CONDITIONALLY
56 bufferedWriter.append(cdImage);
58 "Correct number of writes delegated",
60 writer.getCharacterCount()
65 // BEGIN: writer.bigseq
66 /** A "lazy" sequence of characters, for example one that can represent
67 * content of a CD, read it lazily, do not fit all into memory at once.
69 private static final class CDSequence implements CharSequence {
70 private final int start;
71 private final int end;
74 this(0, 647 * 1024 * 1024);
77 private CDSequence(int start, int end) {
86 // FINISH: writer.bigseq
88 public char charAt(int index) {
89 int ch = index % ('Z' - 'A' + 1);
90 return (char) ('A' + ch);
93 public CharSequence subSequence(int start, int end) {
94 return new CDSequence(start, end);
98 public String toString() {
99 char[] arr = new char[length()];
100 for (int i = 0; i < length(); i++) {
103 return new String(arr);
107 } // end of CharSequence