@Test
 public void testCompareTo() {
   assertTrue(wrapper1.compareTo(wrapper2) == 0);
   assertTrue(wrapper1.compareTo(wrapper3) > 1);
   assertTrue(wrapper1.compareTo(wrapper4) > 1);
   assertTrue(wrapper2.compareTo(wrapper3) > 1);
 }
示例#2
0
 @Override
 public Serializable get() {
   while (true) {
     Serializable s = data.get();
     if (!(s instanceof ByteArrayWrapper)) {
       return s;
     }
     try {
       ByteArrayWrapper w = (ByteArrayWrapper) s;
       ObjectInputStream stream =
           new PluginClassResolverObjectInputStream(new ByteArrayInputStream(w.getArray()));
       Object result;
       try {
         result = stream.readObject();
       } finally {
         IOUtils.closeQuietly(stream);
       }
       Serializable deserialized = (Serializable) result;
       if (data.compareAndSet(s, deserialized)) {
         return deserialized;
       }
     } catch (IOException e) {
       return null;
     } catch (ClassNotFoundException e) {
       return null;
     } catch (ClassCastException e) {
       return null;
     }
   }
 }
 @Test
 public void testEqualsObject() {
   assertTrue(wrapper1.equals(wrapper2));
   assertFalse(wrapper1.equals(wrapper3));
   assertFalse(wrapper1.equals(wrapper4));
   assertFalse(wrapper1.equals(null));
   assertFalse(wrapper2.equals(wrapper3));
 }
  @Test
  public void testEqualsPerformance() {
    boolean testEnabled = false;

    if (testEnabled) {
      final int ITERATIONS = 10000000;
      long start1 = System.currentTimeMillis();
      for (int i = 0; i < ITERATIONS; i++) {
        Comparator<byte[]> comparator = UnsignedBytes.lexicographicalComparator();

        comparator.compare(wrapper1.getData(), wrapper2.getData());
      }
      System.out.println(System.currentTimeMillis() - start1 + "ms");

      long start2 = System.currentTimeMillis();
      for (int i = 0; i < ITERATIONS; i++) {
        Arrays.equals(wrapper1.getData(), wrapper2.getData());
      }
      System.out.println(System.currentTimeMillis() - start2 + "ms");

      long start3 = System.currentTimeMillis();
      for (int i = 0; i < ITERATIONS; i++) {
        FastByteComparisons.compareTo(
            wrapper1.getData(),
            0,
            wrapper1.getData().length,
            wrapper2.getData(),
            0,
            wrapper1.getData().length);
      }
      System.out.println(System.currentTimeMillis() - start3 + "ms");
    }
  }