@Test
public void testValues() {

	Collection<Value> values = _concurrentMap.values();
	Assert.assertSame(values, _concurrentMap.values());
	Assert.assertTrue(values.toString(), values.isEmpty());
	Assert.assertFalse(values.toString(), values.contains(new Value("")));
	_assertEventQueue(Event.MAP_VALUE_FOR_QUERY);
	Assert.assertFalse(values.remove(new Value("")));
	Assert.assertNull(_concurrentMap.put(_testKey, _testValue1));
	_assertEventQueue(Event.MAP_KEY, Event.MAP_VALUE);
	String valuesString = values.toString();
	_assertEventQueue(Event.UNMAP_VALUE_FOR_QUERY);
	Assert.assertEquals(valuesString, 1, values.size());
	Assert.assertTrue(valuesString, values.contains(_testValue1));
	_assertEventQueue(Event.MAP_VALUE_FOR_QUERY);
	Assert.assertFalse(valuesString, values.contains(_testValue2));
	_assertEventQueue(Event.MAP_VALUE_FOR_QUERY);
	Assert.assertFalse(values.remove(_testValue2));
	_assertEventQueue(Event.UNMAP_VALUE_FOR_QUERY);
	Assert.assertTrue(values.remove(_testValue1));
	_assertEventQueue(Event.UNMAP_VALUE_FOR_QUERY);
	Assert.assertNull(_concurrentMap.put(_testKey, _testValue1));
	_assertEventQueue(Event.MAP_KEY, Event.MAP_VALUE);
	Iterator<Value> iterator = values.iterator();
	Assert.assertTrue(iterator.hasNext());
	Value value = iterator.next();
	_assertEventQueue(Event.UNMAP_VALUE_FOR_QUERY);
	valuesString = values.toString();
	_assertEventQueue(Event.UNMAP_VALUE_FOR_QUERY);
	Assert.assertSame(_testValue1, value);
	Assert.assertFalse(iterator.hasNext());
	Assert.assertTrue(valuesString, values.contains(value));
	_assertEventQueue(Event.MAP_VALUE_FOR_QUERY);
	iterator.remove();
	Assert.assertTrue(values.toString(), values.isEmpty());
	Assert.assertFalse(values.toString(), values.contains(value));
	_assertEventQueue(Event.MAP_VALUE_FOR_QUERY);
	Assert.assertNull(_concurrentMap.put(_testKey, _testValue1));
	_assertEventQueue(Event.MAP_KEY, Event.MAP_VALUE);
	Assert.assertEquals(values.toString(), 1, values.size());
	values.clear();
	Assert.assertTrue(_concurrentMap.isEmpty());
}