mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 19:29:06 +01:00
Implemented OfferWriter and RequestWriter, made all the writers
reusable (though not thread-safe), and guiced the readers.
This commit is contained in:
@@ -948,7 +948,7 @@ public abstract class DatabaseComponentTest extends TestCase {
|
||||
will(returnValue(true)); // Visible - do not request message # 1
|
||||
oneOf(database).setStatusSeenIfVisible(txn, contactId, messageId2);
|
||||
will(returnValue(false)); // Not visible - request message # 2
|
||||
oneOf(requestWriter).writeBitmap(expectedRequest);
|
||||
oneOf(requestWriter).writeBitmap(expectedRequest, 3);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner);
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ import net.sf.briar.api.protocol.writers.SubscriptionWriter;
|
||||
import net.sf.briar.api.protocol.writers.TransportWriter;
|
||||
import net.sf.briar.api.serial.Reader;
|
||||
import net.sf.briar.api.serial.ReaderFactory;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
import net.sf.briar.crypto.CryptoModule;
|
||||
import net.sf.briar.protocol.writers.WritersModule;
|
||||
import net.sf.briar.serial.SerialModule;
|
||||
@@ -55,9 +54,12 @@ public class FileReadWriteTest extends TestCase {
|
||||
private final long start = System.currentTimeMillis();
|
||||
|
||||
private final ReaderFactory readerFactory;
|
||||
private final WriterFactory writerFactory;
|
||||
private final PacketWriterFactory packetWriterFactory;
|
||||
private final CryptoComponent crypto;
|
||||
private final AckReader ackReader;
|
||||
private final BatchReader batchReader;
|
||||
private final SubscriptionReader subscriptionReader;
|
||||
private final TransportReader transportReader;
|
||||
private final Author author;
|
||||
private final Group group, group1;
|
||||
private final Message message, message1, message2, message3;
|
||||
@@ -70,11 +72,14 @@ public class FileReadWriteTest extends TestCase {
|
||||
new ProtocolModule(), new SerialModule(),
|
||||
new WritersModule());
|
||||
readerFactory = i.getInstance(ReaderFactory.class);
|
||||
writerFactory = i.getInstance(WriterFactory.class);
|
||||
packetWriterFactory = i.getInstance(PacketWriterFactory.class);
|
||||
crypto = i.getInstance(CryptoComponent.class);
|
||||
assertEquals(crypto.getMessageDigest().getDigestLength(),
|
||||
UniqueId.LENGTH);
|
||||
ackReader = i.getInstance(AckReader.class);
|
||||
batchReader = i.getInstance(BatchReader.class);
|
||||
subscriptionReader = i.getInstance(SubscriptionReader.class);
|
||||
transportReader = i.getInstance(TransportReader.class);
|
||||
// Create two groups: one restricted, one unrestricted
|
||||
GroupFactory groupFactory = i.getInstance(GroupFactory.class);
|
||||
group = groupFactory.createGroup("Unrestricted group", null);
|
||||
@@ -139,21 +144,6 @@ public class FileReadWriteTest extends TestCase {
|
||||
|
||||
testWriteFile();
|
||||
|
||||
GroupReader groupReader = new GroupReader(crypto,
|
||||
new GroupFactoryImpl(crypto, writerFactory));
|
||||
AuthorReader authorReader = new AuthorReader(crypto,
|
||||
new AuthorFactoryImpl(crypto, writerFactory));
|
||||
MessageReader messageReader = new MessageReader(crypto, groupReader,
|
||||
authorReader);
|
||||
AckReader ackReader = new AckReader(new BatchIdReader(),
|
||||
new AckFactoryImpl());
|
||||
BatchReader batchReader = new BatchReader(crypto, messageReader,
|
||||
new BatchFactoryImpl());
|
||||
SubscriptionReader subscriptionReader =
|
||||
new SubscriptionReader(groupReader, new SubscriptionFactoryImpl());
|
||||
TransportReader transportReader =
|
||||
new TransportReader(new TransportFactoryImpl());
|
||||
|
||||
FileInputStream in = new FileInputStream(file);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addObjectReader(Tags.ACK, ackReader);
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
package net.sf.briar.protocol.writers;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.BitSet;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
import net.sf.briar.api.protocol.writers.RequestWriter;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
import net.sf.briar.serial.SerialModule;
|
||||
import net.sf.briar.util.StringUtils;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
import com.google.inject.Injector;
|
||||
|
||||
public class RequestWriterImplTest extends TestCase {
|
||||
|
||||
private final WriterFactory writerFactory;
|
||||
|
||||
public RequestWriterImplTest() {
|
||||
super();
|
||||
Injector i = Guice.createInjector(new SerialModule());
|
||||
writerFactory = i.getInstance(WriterFactory.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteBitmapNoPadding() throws IOException {
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
RequestWriter r = new RequestWriterImpl(out, writerFactory);
|
||||
BitSet b = new BitSet();
|
||||
// 11011001 = 0xD9
|
||||
b.set(0);
|
||||
b.set(1);
|
||||
b.set(3);
|
||||
b.set(4);
|
||||
b.set(7);
|
||||
// 01011001 = 0x59
|
||||
b.set(9);
|
||||
b.set(11);
|
||||
b.set(12);
|
||||
b.set(15);
|
||||
r.writeBitmap(b, 16);
|
||||
// Short user tag 10, short bytes with length 2, 0xD959
|
||||
byte[] output = out.toByteArray();
|
||||
assertEquals("CA" + "92" + "D959", StringUtils.toHexString(output));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWriteBitmapWithPadding() throws IOException {
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
RequestWriter r = new RequestWriterImpl(out, writerFactory);
|
||||
BitSet b = new BitSet();
|
||||
// 01011001 = 0x59
|
||||
b.set(1);
|
||||
b.set(3);
|
||||
b.set(4);
|
||||
b.set(7);
|
||||
// 11011xxx = 0xD8, after padding
|
||||
b.set(8);
|
||||
b.set(9);
|
||||
b.set(11);
|
||||
b.set(12);
|
||||
r.writeBitmap(b, 13);
|
||||
// Short user tag 10, short bytes with length 2, 0x59D8
|
||||
byte[] output = out.toByteArray();
|
||||
assertEquals("CA" + "92" + "59D8", StringUtils.toHexString(output));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user