/**
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.waveprotocol.wave.model.id;
import junit.framework.TestCase;
/**
* Tests for id util.
*
* @author anorth@google.com (Alex North)
*/
public class IdUtilTest extends TestCase implements IdConstants {
public void testConversationRootIsConversational() {
WaveletId root = WaveletId.of("example.com", CONVERSATION_ROOT_WAVELET);
assertTrue(IdUtil.isConversationalId(root));
assertTrue(IdUtil.isConversationRootWaveletId(root));
}
public void testConversationWaveletIsConversational() {
WaveletId conv = WaveletId.of("example.com", CONVERSATION_WAVELET_PREFIX + TOKEN_SEPARATOR +
"foo");
assertTrue(IdUtil.isConversationalId(conv));
}
public void testUserDataWaveletaIsNonConversational() {
WaveletId root = WaveletId.of("example.com", USER_DATA_WAVELET_PREFIX + TOKEN_SEPARATOR
+ "nobody@gwave.com");
assertFalse(IdUtil.isConversationalId(root));
}
public void testUserDataWavelet() {
WaveletId udw = WaveletId.of("example.com", USER_DATA_WAVELET_PREFIX + TOKEN_SEPARATOR
+ "nobody@gwave.com");
assertTrue(IdUtil.isUserDataWavelet(udw));
assertTrue(IdUtil.isUserDataWavelet("nobody@gwave.com", udw));
}
public void testBlipIdIsBlipId() {
assertTrue(IdUtil.isBlipId(BLIP_PREFIX + TOKEN_SEPARATOR + "1"));
assertTrue(IdUtil.isBlipId(BLIP_PREFIX + TOKEN_SEPARATOR + "1++1"));
}
public void testPoorlyEscapedId() {
// Should not throw any exception.
assertFalse(IdUtil.isBlipId("This is NOT a blip id!"));
}
public void testLegacyBlipIdIsBlipId() {
assertTrue(IdUtil.isBlipId("12354*42"));
}
public void testLegacyDataDocIdIsNotBlipId() {
assertFalse(IdUtil.isBlipId("m/asd"));
// Attachment data doc legacy: "*" makes this look like an old blip id.
assertFalse(IdUtil.isBlipId("attach+1234*56"));
}
public void testDataDocIdIsNotBlipId() {
assertFalse(IdUtil.isBlipId("spell"));
assertFalse(IdUtil.isBlipId("data+token"));
}
public void testGhostBlipIdIsBlipId() {
String id = GHOST_BLIP_PREFIX + TOKEN_SEPARATOR + "1";
assertTrue(IdUtil.isBlipId(id));
assertTrue(IdUtil.isGhostBlipId(id));
}
public void testInvalidBlipIdsAreNotBlipIds() {
assertFalse(IdUtil.isBlipId(""));
assertFalse(IdUtil.isBlipId(BLIP_PREFIX));
assertFalse(IdUtil.isBlipId(BLIP_PREFIX + "~" + TOKEN_SEPARATOR));
assertFalse(IdUtil.isBlipId(BLIP_PREFIX + "~" + TOKEN_SEPARATOR + "1"));
}
public void testAttachmentIdIsAttachmentId() {
String coreId = "Gpt39t8i26";
assertTrue(IdUtil.isAttachmentDataDocument(IdUtil.join(ATTACHMENT_METADATA_PREFIX, coreId)));
}
public void testAttachmentIdIsNotBlipId() {
String coreId = "Gpt39t8i26";
assertFalse(IdUtil.isBlipId(IdUtil.join(ATTACHMENT_METADATA_PREFIX, coreId)));
}
public void testSplitIdTokens() {
assertArrayEquals(new String[] {"b"}, IdUtil.split("b"));
assertArrayEquals(new String[] {"b", ""}, IdUtil.split("b+"));
assertArrayEquals(new String[] {"b+"}, IdUtil.split("b~+"));
assertArrayEquals(new String[] {"b+", "d"}, IdUtil.split("b~++d"));
assertArrayEquals(new String[] {"b", "+d"}, IdUtil.split("b+~+d"));
assertArrayEquals(new String[] {"b", "1234"}, IdUtil.split("b+1234"));
assertArrayEquals(new String[] {"user", "fred@gwave.com"}, IdUtil.split("user+fred@gwave.com"));
assertArrayEquals(new String[] {"12+34"}, IdUtil.split("12~+34"));
}
public void testJoinIdTokens() {
assertEquals("b", IdUtil.join("b"));
assertEquals("b~+", IdUtil.join("b+"));
assertEquals("b+1234", IdUtil.join("b", "1234"));
assertEquals("user+fred@gwave.com", IdUtil.join("user", "fred@gwave.com"));
assertEquals("12~+34", IdUtil.join("12+34"));
}
private static <T> void assertArrayEquals(T[] expected, T[] actual) {
assertEquals(expected.length, actual.length);
for (int i = 0; i < expected.length; ++i) {
assertEquals(expected[i], actual[i]);
}
}
}