/*
* Copyright 2011 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 ComparatorsSerializationTest
{
@Test
public void naturalOrder()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAEhjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JE5hdHVyYWxPcmRlckNvbXBhcmF0b3IAAAAAAAAAAQIAAHhw",
Comparators.naturalOrder());
}
@Test
public void reverseNaturalOrder()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAENjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JFJldmVyc2VDb21wYXJhdG9yAAAAAAAAAAECAAFMAApjb21wYXJhdG9ydAAWTGphdmEvdXRpbC9D\n"
+ "b21wYXJhdG9yO3hwc3IASGNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuQ29t\n"
+ "cGFyYXRvcnMkTmF0dXJhbE9yZGVyQ29tcGFyYXRvcgAAAAAAAAABAgAAeHA=",
Comparators.reverseNaturalOrder());
}
@Test
public void reverse()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAENjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JFJldmVyc2VDb21wYXJhdG9yAAAAAAAAAAECAAFMAApjb21wYXJhdG9ydAAWTGphdmEvdXRpbC9D\n"
+ "b21wYXJhdG9yO3hwc3IASGNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuQ29t\n"
+ "cGFyYXRvcnMkTmF0dXJhbE9yZGVyQ29tcGFyYXRvcgAAAAAAAAABAgAAeHA=",
Comparators.reverse(Comparators.naturalOrder()));
}
@Test
public void safeNullsLow()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAEhjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JFNhZmVOdWxsc0xvd0NvbXBhcmF0b3IAAAAAAAAAAQIAAUwAFW5vdE51bGxTYWZlQ29tcGFyYXRv\n"
+ "cnQAFkxqYXZhL3V0aWwvQ29tcGFyYXRvcjt4cHNyAEhjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5i\n"
+ "bG9jay5mYWN0b3J5LkNvbXBhcmF0b3JzJE5hdHVyYWxPcmRlckNvbXBhcmF0b3IAAAAAAAAAAQIA\n"
+ "AHhw",
Comparators.safeNullsLow(Comparators.naturalOrder()));
}
@Test
public void safeNullsHigh()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAEljb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JFNhZmVOdWxsc0hpZ2hDb21wYXJhdG9yAAAAAAAAAAECAAFMABVub3ROdWxsU2FmZUNvbXBhcmF0\n"
+ "b3J0ABZMamF2YS91dGlsL0NvbXBhcmF0b3I7eHBzcgBIY29tLmdzLmNvbGxlY3Rpb25zLmltcGwu\n"
+ "YmxvY2suZmFjdG9yeS5Db21wYXJhdG9ycyROYXR1cmFsT3JkZXJDb21wYXJhdG9yAAAAAAAAAAEC\n"
+ "AAB4cA==",
Comparators.safeNullsHigh(Comparators.naturalOrder()));
}
@Test
public void chain()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAENjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JENoYWluZWRDb21wYXJhdG9yAAAAAAAAAAECAAFbAAtjb21wYXJhdG9yc3QAF1tMamF2YS91dGls\n"
+ "L0NvbXBhcmF0b3I7eHB1cgAXW0xqYXZhLnV0aWwuQ29tcGFyYXRvcjv3sdhVvN0hoAIAAHhwAAAA\n"
+ "AXNyAEhjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3JzJE5h\n"
+ "dHVyYWxPcmRlckNvbXBhcmF0b3IAAAAAAAAAAQIAAHhw",
Comparators.chain(Comparators.naturalOrder()));
}
@Test
public void fromFunctions()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyADtjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5jb21wYXJhdG9yLkZ1bmN0aW9u\n"
+ "Q29tcGFyYXRvcgAAAAAAAAABAgACTAAKY29tcGFyYXRvcnQAFkxqYXZhL3V0aWwvQ29tcGFyYXRv\n"
+ "cjtMAAhmdW5jdGlvbnQAMExjb20vZ3MvY29sbGVjdGlvbnMvYXBpL2Jsb2NrL2Z1bmN0aW9uL0Z1\n"
+ "bmN0aW9uO3hwc3IASGNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuQ29tcGFy\n"
+ "YXRvcnMkTmF0dXJhbE9yZGVyQ29tcGFyYXRvcgAAAAAAAAABAgAAeHBzcgBAY29tLmdzLmNvbGxl\n"
+ "Y3Rpb25zLmltcGwuYmxvY2suZmFjdG9yeS5GdW5jdGlvbnMkVG9TdHJpbmdGdW5jdGlvbgAAAAAA\n"
+ "AAABAgAAeHA=",
Comparators.fromFunctions(Functions.getToString()));
}
@Test
public void fromFunctions2()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAENjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JENoYWluZWRDb21wYXJhdG9yAAAAAAAAAAECAAFbAAtjb21wYXJhdG9yc3QAF1tMamF2YS91dGls\n"
+ "L0NvbXBhcmF0b3I7eHB1cgAXW0xqYXZhLnV0aWwuQ29tcGFyYXRvcjv3sdhVvN0hoAIAAHhwAAAA\n"
+ "AnNyADtjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5jb21wYXJhdG9yLkZ1bmN0aW9uQ29t\n"
+ "cGFyYXRvcgAAAAAAAAABAgACTAAKY29tcGFyYXRvcnQAFkxqYXZhL3V0aWwvQ29tcGFyYXRvcjtM\n"
+ "AAhmdW5jdGlvbnQAMExjb20vZ3MvY29sbGVjdGlvbnMvYXBpL2Jsb2NrL2Z1bmN0aW9uL0Z1bmN0\n"
+ "aW9uO3hwc3IASGNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuQ29tcGFyYXRv\n"
+ "cnMkTmF0dXJhbE9yZGVyQ29tcGFyYXRvcgAAAAAAAAABAgAAeHBzcgBAY29tLmdzLmNvbGxlY3Rp\n"
+ "b25zLmltcGwuYmxvY2suZmFjdG9yeS5GdW5jdGlvbnMkVG9TdHJpbmdGdW5jdGlvbgAAAAAAAAAB\n"
+ "AgAAeHBzcQB+AAVxAH4ACnEAfgAM",
Comparators.fromFunctions(Functions.getToString(), Functions.getToString()));
}
@Test
public void fromFunctions3()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAENjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JENoYWluZWRDb21wYXJhdG9yAAAAAAAAAAECAAFbAAtjb21wYXJhdG9yc3QAF1tMamF2YS91dGls\n"
+ "L0NvbXBhcmF0b3I7eHB1cgAXW0xqYXZhLnV0aWwuQ29tcGFyYXRvcjv3sdhVvN0hoAIAAHhwAAAA\n"
+ "A3NyADtjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5jb21wYXJhdG9yLkZ1bmN0aW9uQ29t\n"
+ "cGFyYXRvcgAAAAAAAAABAgACTAAKY29tcGFyYXRvcnQAFkxqYXZhL3V0aWwvQ29tcGFyYXRvcjtM\n"
+ "AAhmdW5jdGlvbnQAMExjb20vZ3MvY29sbGVjdGlvbnMvYXBpL2Jsb2NrL2Z1bmN0aW9uL0Z1bmN0\n"
+ "aW9uO3hwc3IASGNvbS5ncy5jb2xsZWN0aW9ucy5pbXBsLmJsb2NrLmZhY3RvcnkuQ29tcGFyYXRv\n"
+ "cnMkTmF0dXJhbE9yZGVyQ29tcGFyYXRvcgAAAAAAAAABAgAAeHBzcgBAY29tLmdzLmNvbGxlY3Rp\n"
+ "b25zLmltcGwuYmxvY2suZmFjdG9yeS5GdW5jdGlvbnMkVG9TdHJpbmdGdW5jdGlvbgAAAAAAAAAB\n"
+ "AgAAeHBzcQB+AAVxAH4ACnEAfgAMc3EAfgAFcQB+AApxAH4ADA==",
Comparators.fromFunctions(Functions.getToString(), Functions.getToString(), Functions.getToString()));
}
@Test
public void powerSet()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAERjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JFBvd2VyU2V0Q29tcGFyYXRvcgAAAAAAAAABAgAAeHA=",
Comparators.powerSet());
}
@Test
public void ascendingCollectionSizeComparator()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFNjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JEFzY2VuZGluZ0NvbGxlY3Rpb25TaXplQ29tcGFyYXRvcgAAAAAAAAABAgAAeHA=",
Comparators.ascendingCollectionSizeComparator());
}
@Test
public void descendingCollectionSizeComparator()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAFRjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JERlc2NlbmRpbmdDb2xsZWN0aW9uU2l6ZUNvbXBhcmF0b3IAAAAAAAAAAQIAAHhw",
Comparators.descendingCollectionSizeComparator());
}
@Test
public void compareByFirst()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAEljb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JEJ5Rmlyc3RPZlBhaXJDb21wYXJhdG9yAAAAAAAAAAECAAFMAApjb21wYXJhdG9ydAAWTGphdmEv\n"
+ "dXRpbC9Db21wYXJhdG9yO3hwcA==",
Comparators.byFirstOfPair(null));
}
@Test
public void compareBySecond()
{
Verify.assertSerializedForm(
1L,
"rO0ABXNyAEpjb20uZ3MuY29sbGVjdGlvbnMuaW1wbC5ibG9jay5mYWN0b3J5LkNvbXBhcmF0b3Jz\n"
+ "JEJ5U2Vjb25kT2ZQYWlyQ29tcGFyYXRvcgAAAAAAAAABAgABTAAKY29tcGFyYXRvcnQAFkxqYXZh\n"
+ "L3V0aWwvQ29tcGFyYXRvcjt4cHA=",
Comparators.bySecondOfPair(null));
}
}