/****************************************************************************** * Copyright (c) 2016 Oracle * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Konstantin Komissarchik - initial implementation and ongoing maintenance ******************************************************************************/ package org.eclipse.sapphire.tests.collation; import java.util.Comparator; import org.eclipse.sapphire.CollationService; import org.eclipse.sapphire.Sapphire; import org.eclipse.sapphire.tests.SapphireTestCase; import org.junit.Test; /** * Tests the unique value feature. * * @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a> */ public final class CollationTests extends SapphireTestCase { @Test public void NoCollationSpecified() { try( TestElement element = TestElement.TYPE.instantiate() ) { final CollationService serviceFromInstanceContext = element.getNoCollationSpecified().service( CollationService.class ); assertNotNull( serviceFromInstanceContext ); final CollationService serviceFromGlobalContext = TestElement.PROP_NO_COLLATION_SPECIFIED.service( CollationService.class ); assertNotNull( serviceFromGlobalContext ); assertSame( serviceFromGlobalContext, serviceFromInstanceContext ); final Comparator<String> comparator = serviceFromInstanceContext.comparator(); assertTrue( comparator.compare( "a", "b" ) < 0 ); assertTrue( comparator.compare( "b", "a" ) > 0 ); assertTrue( comparator.compare( "A", "a" ) != 0 ); } } @Test public void IgnoreCaseLiteralFalse() { try( TestElement element = TestElement.TYPE.instantiate() ) { final CollationService serviceFromInstanceContext = element.getIgnoreCaseLiteralFalse().service( CollationService.class ); assertNotNull( serviceFromInstanceContext ); final CollationService serviceFromGlobalContext = TestElement.PROP_IGNORE_CASE_LITERAL_FALSE.service( CollationService.class ); assertNotNull( serviceFromGlobalContext ); assertSame( serviceFromGlobalContext, serviceFromInstanceContext ); final Comparator<String> comparator = serviceFromInstanceContext.comparator(); assertTrue( comparator.compare( "a", "b" ) < 0 ); assertTrue( comparator.compare( "b", "a" ) > 0 ); assertTrue( comparator.compare( "A", "a" ) != 0 ); } } @Test public void IgnoreCaseLiteralTrue() { try( TestElement element = TestElement.TYPE.instantiate() ) { final CollationService serviceFromInstanceContext = element.getIgnoreCaseLiteralTrue().service( CollationService.class ); assertNotNull( serviceFromInstanceContext ); final CollationService serviceFromGlobalContext = TestElement.PROP_IGNORE_CASE_LITERAL_TRUE.service( CollationService.class ); assertNotNull( serviceFromGlobalContext ); assertSame( serviceFromGlobalContext, serviceFromInstanceContext ); final Comparator<String> comparator = serviceFromInstanceContext.comparator(); assertTrue( comparator.compare( "a", "b" ) < 0 ); assertTrue( comparator.compare( "b", "a" ) > 0 ); assertTrue( comparator.compare( "A", "a" ) == 0 ); } } @Test public void IgnoreCaseDynamic() { try( TestElement element = TestElement.TYPE.instantiate() ) { final CollationService serviceFromInstanceContext = element.getIgnoreCaseDynamic().service( CollationService.class ); assertNotNull( serviceFromInstanceContext ); final CollationService serviceFromGlobalContext = TestElement.PROP_IGNORE_CASE_DYNAMIC.service( CollationService.class ); assertNotNull( serviceFromGlobalContext ); assertNotSame( serviceFromGlobalContext, serviceFromInstanceContext ); final Comparator<String> comparator1 = serviceFromInstanceContext.comparator(); assertTrue( comparator1.compare( "a", "b" ) < 0 ); assertTrue( comparator1.compare( "b", "a" ) > 0 ); assertTrue( comparator1.compare( "A", "a" ) != 0 ); element.setIgnoreCase( true ); final Comparator<String> comparator2 = serviceFromInstanceContext.comparator(); assertNotSame( comparator2, comparator1 ); assertTrue( comparator2.compare( "a", "b" ) < 0 ); assertTrue( comparator2.compare( "b", "a" ) > 0 ); assertTrue( comparator2.compare( "A", "a" ) == 0 ); } } @Test public void IgnoreCaseDynamicGlobal() { Sapphire.global().put( "TestIgnoreCase", false ); try( TestElement element = TestElement.TYPE.instantiate() ) { final CollationService serviceFromInstanceContext = element.getIgnoreCaseDynamicGlobal().service( CollationService.class ); assertNotNull( serviceFromInstanceContext ); final CollationService serviceFromGlobalContext = TestElement.PROP_IGNORE_CASE_DYNAMIC_GLOBAL.service( CollationService.class ); assertNotNull( serviceFromGlobalContext ); assertSame( serviceFromGlobalContext, serviceFromInstanceContext ); final Comparator<String> comparator1 = serviceFromInstanceContext.comparator(); assertTrue( comparator1.compare( "a", "b" ) < 0 ); assertTrue( comparator1.compare( "b", "a" ) > 0 ); assertTrue( comparator1.compare( "A", "a" ) != 0 ); Sapphire.global().put( "TestIgnoreCase", true ); final Comparator<String> comparator2 = serviceFromInstanceContext.comparator(); assertNotSame( comparator2, comparator1 ); assertTrue( comparator2.compare( "a", "b" ) < 0 ); assertTrue( comparator2.compare( "b", "a" ) > 0 ); assertTrue( comparator2.compare( "A", "a" ) == 0 ); } } }