// Copyright 2010 Google Inc. All Rights Reserved.
package org.waveprotocol.wave.model.id;
import junit.framework.TestCase;
/**
* Tests for wave and wavelet ids.
*
* @author anorth@google.com (Alex North)
*/
public class WaveAndWaveletIdTest extends TestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testEmptyDomainRejected() {
assertIdRejected(null, "id");
assertIdRejected("", "id");
}
public void testEmptyIdRejected() {
assertIdRejected("example.com", null);
assertIdRejected("example.com", "");
}
public void testSeparatorIsNotAllowedInDomainOrId() {
String illegal = "id" + IdSerialiser.PART_SEPARATOR + "suffix";
assertIdRejected(illegal, "id");
assertIdRejected("example.com", illegal);
}
// Escaping is tested more in IdSerialiserTest.
public void testWaveIdCompareDiffDomain() {
assertIdsCompare("google.com", "efg", "yahoo.com", "abc");
}
public void testWaveIdCompareSameDomain() {
assertIdsCompare("google.com", "abc", "google.com", "efg");
}
public void testWaveIdEquals() {
String domain = "example.com";
String id = "efg";
{
WaveId idA = new WaveId(domain, id);
WaveId idB = new WaveId(domain, id);
assertEquals(0, idA.compareTo(idB));
assertEquals(0, idB.compareTo(idA));
assertEquals(idA, idA);
assertEquals(idB, idB);
assertEquals(idA, idB);
assertEquals(idA.hashCode(), idB.hashCode());
}
{
WaveletId idA = new WaveletId(domain, id);
WaveletId idB = new WaveletId(domain, id);
assertEquals(0, idA.compareTo(idB));
assertEquals(0, idB.compareTo(idA));
assertEquals(idA, idA);
assertEquals(idB, idB);
assertEquals(idA, idB);
assertEquals(idA.hashCode(), idB.hashCode());
}
}
/**
* Checks that neither a wave or wavelet id may be constructed
* with a domain and id.
*/
private static void assertIdRejected(String domain, String id) {
try {
new WaveId(domain, id);
fail("Expected wave id construction to throw an exception");
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
try {
new WaveletId(domain, id);
fail("Expected wavelet id construction to throw an exception");
} catch (NullPointerException expected) {
} catch (IllegalArgumentException expected) {
}
}
/**
* Checks that a pair of wave[let] ids with specified domain and id
* compare such that A < B.
*/
private static void assertIdsCompare(String domainA, String idA, String domainB, String idB) {
{
WaveId a = new WaveId(domainA, idA);
WaveId b = new WaveId(domainB, idB);
assertTrue(a.compareTo(b) < 0);
assertTrue(b.compareTo(a) > 0);
assertFalse(a.equals(b));
}
{
WaveletId a = new WaveletId(domainA, idA);
WaveletId b = new WaveletId(domainB, idB);
assertTrue(a.compareTo(b) < 0);
assertTrue(b.compareTo(a) > 0);
assertFalse(a.equals(b));
}
}
}