/src/test/java/com/allanbank/mongodb/bson/element/ObjectIdElementTest.java

https://github.com/cazacugmihai/mongodb-async-driver · Java · 257 lines · 142 code · 48 blank · 67 comment · 5 complexity · 98e2006748f3ece8ef85e5adb376fd6f MD5 · raw file

  1. /*
  2. * #%L
  3. * ObjectIdElementTest.java - mongodb-async-driver - Allanbank Consulting, Inc.
  4. * %%
  5. * Copyright (C) 2011 - 2014 Allanbank Consulting, Inc.
  6. * %%
  7. * Licensed under the Apache License, Version 2.0 (the "License");
  8. * you may not use this file except in compliance with the License.
  9. * You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS,
  15. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. * See the License for the specific language governing permissions and
  17. * limitations under the License.
  18. * #L%
  19. */
  20. package com.allanbank.mongodb.bson.element;
  21. import static org.easymock.EasyMock.createMock;
  22. import static org.easymock.EasyMock.eq;
  23. import static org.easymock.EasyMock.expectLastCall;
  24. import static org.easymock.EasyMock.replay;
  25. import static org.easymock.EasyMock.verify;
  26. import static org.junit.Assert.assertEquals;
  27. import static org.junit.Assert.assertFalse;
  28. import static org.junit.Assert.assertNotSame;
  29. import static org.junit.Assert.assertSame;
  30. import static org.junit.Assert.assertTrue;
  31. import java.util.ArrayList;
  32. import java.util.Arrays;
  33. import java.util.List;
  34. import org.junit.Test;
  35. import com.allanbank.mongodb.bson.Element;
  36. import com.allanbank.mongodb.bson.ElementType;
  37. import com.allanbank.mongodb.bson.Visitor;
  38. /**
  39. * ObjectIdElementTest provides tests for the {@link ObjectIdElement} class.
  40. *
  41. * @copyright 2012-2013, Allanbank Consulting, Inc., All Rights Reserved
  42. */
  43. public class ObjectIdElementTest {
  44. /**
  45. * Test method for
  46. * {@link ObjectIdElement#accept(com.allanbank.mongodb.bson.Visitor)} .
  47. */
  48. @Test
  49. public void testAccept() {
  50. final ObjectIdElement element = new ObjectIdElement("foo",
  51. new ObjectId());
  52. final Visitor mockVisitor = createMock(Visitor.class);
  53. mockVisitor.visitObjectId(eq("foo"), eq(element.getId()));
  54. expectLastCall();
  55. replay(mockVisitor);
  56. element.accept(mockVisitor);
  57. verify(mockVisitor);
  58. }
  59. /**
  60. * Test method for {@link ObjectIdElement#compareTo(Element)}.
  61. */
  62. @Test
  63. public void testCompareTo() {
  64. final ObjectId oid1 = new ObjectId();
  65. final ObjectId oid2 = new ObjectId();
  66. final ObjectIdElement a1 = new ObjectIdElement("a", oid1);
  67. final ObjectIdElement a2 = new ObjectIdElement("a", oid2);
  68. final ObjectIdElement b1 = new ObjectIdElement("b", oid1);
  69. final Element other = new MaxKeyElement("a");
  70. assertEquals(0, a1.compareTo(a1));
  71. assertTrue(a1.compareTo(a2) < 0);
  72. assertTrue(a2.compareTo(a1) > 0);
  73. assertTrue(a1.compareTo(b1) < 0);
  74. assertTrue(b1.compareTo(a1) > 0);
  75. assertTrue(a1.compareTo(other) < 0);
  76. assertTrue(other.compareTo(a1) > 0);
  77. }
  78. /**
  79. * Test method for
  80. * {@link ObjectIdElement#ObjectIdElement(java.lang.String, ObjectId)} .
  81. */
  82. @Test(expected = IllegalArgumentException.class)
  83. @SuppressWarnings("unused")
  84. public void testConstructorWithNullId() {
  85. new ObjectIdElement("foo", null);
  86. }
  87. /**
  88. * Test method for {@link ObjectIdElement#equals(java.lang.Object)} .
  89. */
  90. @Test
  91. public void testEqualsObject() {
  92. final List<Element> objs1 = new ArrayList<Element>();
  93. final List<Element> objs2 = new ArrayList<Element>();
  94. for (final String name : Arrays.asList("1", "foo", "bar", "baz", "2")) {
  95. for (int i = 0; i < 10; ++i) {
  96. final ObjectId id = new ObjectId();
  97. objs1.add(new ObjectIdElement(name, id));
  98. objs2.add(new ObjectIdElement(name, id));
  99. }
  100. }
  101. // Sanity check.
  102. assertEquals(objs1.size(), objs2.size());
  103. for (int i = 0; i < objs1.size(); ++i) {
  104. final Element obj1 = objs1.get(i);
  105. Element obj2 = objs2.get(i);
  106. assertTrue(obj1.equals(obj1));
  107. assertNotSame(obj1, obj2);
  108. assertEquals(obj1, obj2);
  109. assertEquals(obj1.hashCode(), obj2.hashCode());
  110. for (int j = i + 1; j < objs1.size(); ++j) {
  111. obj2 = objs2.get(j);
  112. assertFalse(obj1.equals(obj2));
  113. assertFalse("" + obj1 + " != " + obj2,
  114. obj1.hashCode() == obj2.hashCode());
  115. }
  116. assertFalse(obj1.equals("foo"));
  117. assertFalse(obj1.equals(null));
  118. assertFalse(obj1.equals(new MaxKeyElement(obj1.getName())));
  119. }
  120. }
  121. /**
  122. * Test method for {@link ObjectIdElement#getId()}.
  123. */
  124. @Test
  125. public void testGetValue() {
  126. final ObjectId id = new ObjectId();
  127. final ObjectIdElement element = new ObjectIdElement("foo", id);
  128. assertEquals(id, element.getId());
  129. }
  130. /**
  131. * Test method for
  132. * {@link ObjectIdElement#ObjectIdElement(java.lang.String, ObjectId)} .
  133. */
  134. @Test
  135. public void testObjectIdElement() {
  136. final ObjectId id = new ObjectId();
  137. final ObjectIdElement element = new ObjectIdElement("foo", id);
  138. assertEquals("foo", element.getName());
  139. assertEquals(id, element.getId());
  140. assertEquals(ElementType.OBJECT_ID, element.getType());
  141. }
  142. /**
  143. * Test method for {@link ObjectIdElement#ObjectIdElement}.
  144. */
  145. @SuppressWarnings("unused")
  146. @Test(expected = IllegalArgumentException.class)
  147. public void testThrowsOnNullName() {
  148. new ObjectIdElement(null, new ObjectId());
  149. }
  150. /**
  151. * Test method for {@link ObjectIdElement#ObjectIdElement}.
  152. */
  153. @SuppressWarnings("unused")
  154. @Test(expected = IllegalArgumentException.class)
  155. public void testThrowsOnNullValue() {
  156. new ObjectIdElement("s", null);
  157. }
  158. /**
  159. * Test method for {@link ObjectIdElement#toString()}.
  160. */
  161. @Test
  162. public void testToString() {
  163. final ObjectIdElement element = new ObjectIdElement("foo",
  164. new ObjectId(0x11223344, 0x1122334455667788L));
  165. assertEquals("foo : ObjectId('112233441122334455667788')",
  166. element.toString());
  167. }
  168. /**
  169. * Test method for {@link ObjectIdElement#getValueAsObject()}.
  170. */
  171. @Test
  172. public void testValueAsObject() {
  173. final ObjectIdElement element = new ObjectIdElement("foo",
  174. new ObjectId(0x11223344, 0x1122334455667788L));
  175. assertEquals(new ObjectId(0x11223344, 0x1122334455667788L),
  176. element.getValueAsObject());
  177. }
  178. /**
  179. * Test method for {@link ObjectIdElement#getValueAsString()}.
  180. */
  181. @Test
  182. public void testValueAsString() {
  183. final ObjectIdElement element = new ObjectIdElement("foo",
  184. new ObjectId(0x11223344, 0x1122334455667788L));
  185. assertEquals("ObjectId('112233441122334455667788')",
  186. element.getValueAsString());
  187. }
  188. /**
  189. * Test method for {@link ObjectIdElement#withName(String)}.
  190. */
  191. @Test
  192. public void testWithName() {
  193. final ObjectId id = new ObjectId();
  194. ObjectIdElement element = new ObjectIdElement("foo", id);
  195. element = element.withName("bar");
  196. assertEquals("bar", element.getName());
  197. assertEquals(id, element.getId());
  198. assertEquals(ElementType.OBJECT_ID, element.getType());
  199. }
  200. /**
  201. * Test method for {@link ObjectIdElement#withName(String)}.
  202. */
  203. @Test
  204. public void testWithNameWhenSameName() {
  205. final ObjectId id = new ObjectId();
  206. final ObjectIdElement element = new ObjectIdElement("foo", id);
  207. assertSame(element, element.withName("foo"));
  208. }
  209. }