1 #
   2 # Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
   3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4 #
   5 # This code is free software; you can redistribute it and/or modify it
   6 # under the terms of the GNU General Public License version 2 only, as
   7 # published by the Free Software Foundation.
   8 #
   9 # This code is distributed in the hope that it will be useful, but WITHOUT
  10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12 # version 2 for more details (a copy is included in the LICENSE file that
  13 # accompanied this code).
  14 #
  15 # You should have received a copy of the GNU General Public License version
  16 # 2 along with this work; if not, write to the Free Software Foundation,
  17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18 #
  19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20 # or visit www.oracle.com if you need additional information or have any
  21 # questions.
  22 #
  23 # @test
  24 # @key headful
  25 # @bug 8055160 8216008
  26 # @summary Unit test for javax.accessibility.AccessibilitySPI
  27 #
  28 # @build Load FooProvider BarProvider UnusedProvider
  29 # @run shell basic.sh
  30 
  31 # Command-line usage: sh basic.sh /path/to/build
  32 
  33 if [ -z "$TESTJAVA" ]; then
  34   if [ $# -lt 1 ]; then exit 1; fi
  35   TESTJAVA="$1"
  36   TESTSRC=`pwd`
  37   TESTCLASSES="`pwd`"
  38 fi
  39 
  40 JAVA="$TESTJAVA/bin/java"
  41 
  42 OS=`uname -s`
  43 case "$OS" in
  44     SunOS | Darwin | AIX )
  45       FS='/'
  46       SEP=':' ;;
  47     Linux )
  48       FS='/'
  49       SEP=':' ;;
  50     * )
  51       FS='\\'
  52       SEP='\;' ;;
  53 esac
  54 
  55 TESTD=x.test
  56 rm -rf $TESTD
  57 mkdir -p $TESTD
  58 
  59 mv $TESTCLASSES/FooProvider.class $TESTD
  60 mv $TESTCLASSES/BarProvider.class $TESTD
  61 mv $TESTCLASSES/UnusedProvider.class $TESTD
  62 mkdir -p $TESTD/META-INF/services
  63 echo FooProvider >$TESTD/META-INF/services/javax.accessibility.AccessibilityProvider
  64 echo BarProvider >>$TESTD/META-INF/services/javax.accessibility.AccessibilityProvider
  65 echo UnusedProvider >>$TESTD/META-INF/services/javax.accessibility.AccessibilityProvider
  66 
  67 
  68 failures=0
  69 
  70 go() {
  71   CP="$TESTCLASSES$SEP$TESTD"
  72   echo ''
  73   sh -xc "$JAVA $SECURITY_MANAGER -Djavax.accessibility.assistive_technologies=$PROVIDER1$COMMA$PROVIDER2 -cp $CP Load $1 $2 $3" 2>&1
  74   if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
  75 }
  76 
  77 # find one provider
  78 PROVIDER1="FooProvider"
  79 go pass $PROVIDER1
  80 
  81 # start using security manager
  82 SECURITY_MANAGER="-Djava.security.manager -Djava.security.policy=$TESTSRC/accessibilityProvider.sp"
  83 
  84 # find one provider (with security manager)
  85 go pass $PROVIDER1
  86 SECURITY_MANAGER=
  87 
  88 # fail if no provider found
  89 PROVIDER1="NoProvider"
  90 go fail $PROVIDER1
  91 
  92 # pass if none provider found
  93 PROVIDER1=
  94 go pass $PROVIDER1
  95 
  96 # setup for two providers
  97 COMMA=","
  98 
  99 # find two providers, both exist
 100 PROVIDER1="FooProvider"
 101 PROVIDER2="BarProvider"
 102 go pass $PROVIDER1 $PROVIDER2
 103 
 104 # find two providers, where second one doesn't exist
 105 PROVIDER1="FooProvider"
 106 PROVIDER2="NoProvider"
 107 go fail $PROVIDER1 $PROVIDER2
 108 
 109 # find two providers, where first one doesn't exist
 110 PROVIDER1="NoProvider"
 111 PROVIDER2="BarProvider"
 112 go fail $PROVIDER1 $PROVIDER2
 113 
 114 echo ''
 115 if [ $failures -gt 0 ];
 116   then echo "$failures case(s) failed";
 117   else echo "All cases passed"; fi
 118 exit $failures
 119