package edu.washington.escience.myria;
import static org.junit.Assert.assertEquals;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.junit.Test;
import com.google.common.collect.ImmutableList;
import edu.washington.escience.myria.storage.TupleBuffer;
public class CSVTupleWriterTest {
@Test
public void testConstructionWithNoNames() throws IOException {
OutputStream out = new ByteArrayOutputStream();
CsvTupleWriter writer = new CsvTupleWriter();
writer.open(out);
writer.writeColumnHeaders(ImmutableList.of("foo", "bar", "baz"));
TupleBuffer tuples =
new TupleBuffer(
new Schema(ImmutableList.of(Type.STRING_TYPE, Type.STRING_TYPE, Type.STRING_TYPE)));
tuples.putString(0, "0");
tuples.putString(1, "hello world");
tuples.putString(2, "a, b");
tuples.putString(0, "1");
tuples.putString(1, "\"heya\"");
tuples.putString(2, "last");
writer.writeTuples(tuples);
writer.done();
assertEquals(
"foo,bar,baz\r\n0,hello world,\"a, b\"\r\n1,\"\"\"heya\"\"\",last\r\n", out.toString());
}
@Test
public void testDelimiter() throws IOException {
OutputStream out = new ByteArrayOutputStream();
// use an uncommon one for testing
CsvTupleWriter writer = new CsvTupleWriter('_');
writer.open(out);
writer.writeColumnHeaders(ImmutableList.of("foo", "bar"));
TupleBuffer tuples =
new TupleBuffer(new Schema(ImmutableList.of(Type.STRING_TYPE, Type.INT_TYPE)));
tuples.putString(0, "a");
tuples.putInt(1, 1);
tuples.putString(0, "b");
tuples.putInt(1, 2);
writer.writeTuples(tuples);
writer.done();
assertEquals("foo_bar\r\na_1\r\nb_2\r\n", out.toString());
}
}