@Test public void testCompareTo() { assertTrue(wrapper1.compareTo(wrapper2) == 0); assertTrue(wrapper1.compareTo(wrapper3) > 1); assertTrue(wrapper1.compareTo(wrapper4) > 1); assertTrue(wrapper2.compareTo(wrapper3) > 1); }
@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"); } }