/*
* Copyright 2013 Goldman Sachs.
*
* 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 com.gs.collections.impl.block.factory;
import com.gs.collections.impl.test.Verify;
import org.junit.Test;
public class HashingStrategiesSerializationTest
{
@Test
public void defaultHashingStrategy()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAEdjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJERlZmF1bHRTdHJhdGVneQAAAAAAAAABAgAAeHA=",
HashingStrategies.defaultStrategy());
}
@Test
public void nullSafeHashingStrategy()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAE9jb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJE51bGxTYWZlSGFzaGluZ1N0cmF0ZWd5AAAAAAAAAAECAAFMABNub25OdWxsU2FmZVN0\n"
+ "cmF0ZWd5dAAuTGNvbS9ncy9jb2xsZWN0aW9ucy9hcGkvYmxvY2svSGFzaGluZ1N0cmF0ZWd5O3hw\n"
+ "c3IAR2NvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuSGFzaGluZ1N0cmF0ZWdp\n"
+ "ZXMkRGVmYXVsdFN0cmF0ZWd5AAAAAAAAAAECAAB4cA==",
HashingStrategies.nullSafeHashingStrategy(HashingStrategies.defaultStrategy()));
}
@Test
public void fromFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAE9jb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJEZ1bmN0aW9uSGFzaGluZ1N0cmF0ZWd5AAAAAAAAAAECAAFMAAhmdW5jdGlvbnQAMExj\n"
+ "b20vZ3MvY29sbGVjdGlvbnMvYXBpL2Jsb2NrL2Z1bmN0aW9uL0Z1bmN0aW9uO3hwc3IAQGNvbS5n\n"
+ "cy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuRnVuY3Rpb25zJFRvU3RyaW5nRnVuY3Rp\n"
+ "b24AAAAAAAAAAQIAAHhw",
HashingStrategies.fromFunction(Functions.getToString()));
}
@Test
public void identityHashingStrategy()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAE9jb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJElkZW50aXR5SGFzaGluZ1N0cmF0ZWd5AAAAAAAAAAECAAB4cA==",
HashingStrategies.identityStrategy());
}
@Test
public void chainedHashingStrategy()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAE5jb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJENoYWluZWRIYXNoaW5nU3RyYXRlZ3kAAAAAAAAAAQIAAVsAEWhhc2hpbmdTdHJhdGVn\n"
+ "aWVzdAAvW0xjb20vZ3MvY29sbGVjdGlvbnMvYXBpL2Jsb2NrL0hhc2hpbmdTdHJhdGVneTt4cHVy\n"
+ "AC9bTGNvbS5ncy5jb2xsZWN0aW9ucy5hcGkuYmxvY2suSGFzaGluZ1N0cmF0ZWd5O2dYZQViLT3o\n"
+ "AgAAeHAAAAABc3IAT2NvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuSGFzaGlu\n"
+ "Z1N0cmF0ZWdpZXMkSWRlbnRpdHlIYXNoaW5nU3RyYXRlZ3kAAAAAAAAAAQIAAHhw",
HashingStrategies.chain(HashingStrategies.identityStrategy()));
}
@Test
public void fromBooleanFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFZjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJEJvb2xlYW5GdW5jdGlvbkhhc2hpbmdTdHJhdGVneQAAAAAAAAABAgABTAAIZnVuY3Rp\n"
+ "b250AEFMY29tL2dzL2NvbGxlY3Rpb25zL2FwaS9ibG9jay9mdW5jdGlvbi9wcmltaXRpdmUvQm9v\n"
+ "bGVhbkZ1bmN0aW9uO3hwc3IAUGNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3Rvcnku\n"
+ "U3RyaW5nRnVuY3Rpb25zJFRvUHJpbWl0aXZlQm9vbGVhbkZ1bmN0aW9uAAAAAAAAAAECAAB4cA==\n",
HashingStrategies.fromBooleanFunction(StringFunctions.toPrimitiveBoolean()));
}
@Test
public void fromByteFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFNjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJEJ5dGVGdW5jdGlvbkhhc2hpbmdTdHJhdGVneQAAAAAAAAABAgABTAAIZnVuY3Rpb250\n"
+ "AD5MY29tL2dzL2NvbGxlY3Rpb25zL2FwaS9ibG9jay9mdW5jdGlvbi9wcmltaXRpdmUvQnl0ZUZ1\n"
+ "bmN0aW9uO3hwc3IATWNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuU3RyaW5n\n"
+ "RnVuY3Rpb25zJFRvUHJpbWl0aXZlQnl0ZUZ1bmN0aW9uAAAAAAAAAAECAAB4cA==",
HashingStrategies.fromByteFunction(StringFunctions.toPrimitiveByte()));
}
@Test
public void fromCharFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFNjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJENoYXJGdW5jdGlvbkhhc2hpbmdTdHJhdGVneQAAAAAAAAABAgABTAAIZnVuY3Rpb250\n"
+ "AD5MY29tL2dzL2NvbGxlY3Rpb25zL2FwaS9ibG9jay9mdW5jdGlvbi9wcmltaXRpdmUvQ2hhckZ1\n"
+ "bmN0aW9uO3hwc3IATWNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuU3RyaW5n\n"
+ "RnVuY3Rpb25zJFRvUHJpbWl0aXZlQ2hhckZ1bmN0aW9uAAAAAAAAAAECAAB4cA==",
HashingStrategies.fromCharFunction(StringFunctions.toPrimitiveChar()));
}
@Test
public void fromDoubleFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFVjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJERvdWJsZUZ1bmN0aW9uSGFzaGluZ1N0cmF0ZWd5AAAAAAAAAAECAAFMAAhmdW5jdGlv\n"
+ "bnQAQExjb20vZ3MvY29sbGVjdGlvbnMvYXBpL2Jsb2NrL2Z1bmN0aW9uL3ByaW1pdGl2ZS9Eb3Vi\n"
+ "bGVGdW5jdGlvbjt4cHNyAE9jb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LlN0\n"
+ "cmluZ0Z1bmN0aW9ucyRUb1ByaW1pdGl2ZURvdWJsZUZ1bmN0aW9uAAAAAAAAAAECAAB4cA==",
HashingStrategies.fromDoubleFunction(StringFunctions.toPrimitiveDouble()));
}
@Test
public void fromFloatFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFRjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJEZsb2F0RnVuY3Rpb25IYXNoaW5nU3RyYXRlZ3kAAAAAAAAAAQIAAUwACGZ1bmN0aW9u\n"
+ "dAA/TGNvbS9ncy9jb2xsZWN0aW9ucy9hcGkvYmxvY2svZnVuY3Rpb24vcHJpbWl0aXZlL0Zsb2F0\n"
+ "RnVuY3Rpb247eHBzcgBOY29tLmdzLmNvbGxlY3Rpb25zLmltcGwuYmxvY2suZmFjdG9yeS5TdHJp\n"
+ "bmdGdW5jdGlvbnMkVG9QcmltaXRpdmVGbG9hdEZ1bmN0aW9uAAAAAAAAAAECAAB4cA==",
HashingStrategies.fromFloatFunction(StringFunctions.toPrimitiveFloat()));
}
@Test
public void fromIntFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFJjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJEludEZ1bmN0aW9uSGFzaGluZ1N0cmF0ZWd5AAAAAAAAAAECAAFMAAhmdW5jdGlvbnQA\n"
+ "PUxjb20vZ3MvY29sbGVjdGlvbnMvYXBpL2Jsb2NrL2Z1bmN0aW9uL3ByaW1pdGl2ZS9JbnRGdW5j\n"
+ "dGlvbjt4cHNyAExjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LlN0cmluZ0Z1\n"
+ "bmN0aW9ucyRUb1ByaW1pdGl2ZUludEZ1bmN0aW9uAAAAAAAAAAECAAB4cA==",
HashingStrategies.fromIntFunction(StringFunctions.toPrimitiveInt()));
}
@Test
public void fromLongFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFNjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJExvbmdGdW5jdGlvbkhhc2hpbmdTdHJhdGVneQAAAAAAAAABAgABTAAIZnVuY3Rpb250\n"
+ "AD5MY29tL2dzL2NvbGxlY3Rpb25zL2FwaS9ibG9jay9mdW5jdGlvbi9wcmltaXRpdmUvTG9uZ0Z1\n"
+ "bmN0aW9uO3hwc3IATWNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuU3RyaW5n\n"
+ "RnVuY3Rpb25zJFRvUHJpbWl0aXZlTG9uZ0Z1bmN0aW9uAAAAAAAAAAECAAB4cA==",
HashingStrategies.fromLongFunction(StringFunctions.toPrimitiveLong()));
}
@Test
public void fromShortFunction()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFRjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5Lkhhc2hpbmdTdHJh\n"
+ "dGVnaWVzJFNob3J0RnVuY3Rpb25IYXNoaW5nU3RyYXRlZ3kAAAAAAAAAAQIAAUwACGZ1bmN0aW9u\n"
+ "dAA/TGNvbS9ncy9jb2xsZWN0aW9ucy9hcGkvYmxvY2svZnVuY3Rpb24vcHJpbWl0aXZlL1Nob3J0\n"
+ "RnVuY3Rpb247eHBzcgBOY29tLmdzLmNvbGxlY3Rpb25zLmltcGwuYmxvY2suZmFjdG9yeS5TdHJp\n"
+ "bmdGdW5jdGlvbnMkVG9QcmltaXRpdmVTaG9ydEZ1bmN0aW9uAAAAAAAAAAECAAB4cA==",
HashingStrategies.fromShortFunction(StringFunctions.toPrimitiveShort()));
}
}