Path: blob/master/test/jdk/javax/management/ObjectName/ComparatorTest.java
41149 views
/*1* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*/2223/*24* @test25* @bug 503668026* @summary Test the ObjectName.compareTo() method.27* @author Luis-Miguel Alventosa28*29* @run clean ComparatorTest30* @run build ComparatorTest31* @run main ComparatorTest32*/3334import javax.management.*;3536public class ComparatorTest {3738private static final char LT = '<';39private static final char EQ = '=';40private static final char GT = '>';4142private static final String tests[][] = {43//44// domains45//46{ String.valueOf(LT), ":k1=v1", "d:k1=v1" },47{ String.valueOf(EQ), "d:k1=v1", "d:k1=v1" },48{ String.valueOf(GT), "d2:k1=v1", "d1:k1=v1" },49//50// "type=" key property51//52{ String.valueOf(GT), "d:type=a,k1=v1", "d:k1=v1" },53{ String.valueOf(GT), "d:type=a,k1=v1", "d:type=" },54{ String.valueOf(GT), "d:type=a,k1=v1", "d:type=,k1=v1" },55{ String.valueOf(LT), "d:type=a,k1=v1", "d:type=b,k1=v1" },56{ String.valueOf(LT), "d:type=a,k2=v2", "d:type=b,k1=v1" },57//58// canonical form59//60{ String.valueOf(EQ), "d:k1=v1,k2=v2", "d:k2=v2,k1=v1" },61{ String.valueOf(LT), "d:k1=v1,k2=v2", "d:k1=v1,k3=v3" },62{ String.valueOf(LT), "d:k1=v1,k2=v2", "d:k2=v2,k1=v1,k3=v3" },63//64// wildcards65//66{ String.valueOf(LT), "d:k1=v1", "d:k1=v1,*" },67{ String.valueOf(GT), "d:k1=v1,k2=v2", "d:k1=v1,*" },68{ String.valueOf(GT), "domain:k1=v1", "?:k1=v1" },69{ String.valueOf(GT), "domain:k1=v1", "*:k1=v1" },70{ String.valueOf(GT), "domain:k1=v1", "domai?:k1=v1" },71{ String.valueOf(GT), "domain:k1=v1", "domai*:k1=v1" },72{ String.valueOf(GT), "domain:k1=v1", "do?ain:k1=v1" },73{ String.valueOf(GT), "domain:k1=v1", "do*ain:k1=v1" },74};7576private static boolean compare(char comparator, String on1, String on2) {77boolean ok = false;78System.out.println("Test " + on1 + " " + comparator + " " + on2);79try {80ObjectName o1 = ObjectName.getInstance(on1);81ObjectName o2 = ObjectName.getInstance(on2);82int result = o1.compareTo(o2);83switch (comparator) {84case LT:85if (result < 0)86ok = true;87break;88case EQ:89if (result == 0)90ok = true;91break;92case GT:93if (result > 0)94ok = true;95break;96default:97throw new IllegalArgumentException(98"Test incorrect: case: " + comparator);99}100} catch (Exception e) {101ok = false;102System.out.println("Got Unexpected Exception = " + e.toString());103}104return ok;105}106107private static boolean lessThan(String on1, String on2) {108return compare(LT, on1, on2);109}110111private static boolean equalTo(String on1, String on2) {112return compare(EQ, on1, on2);113}114115private static boolean greaterThan(String on1, String on2) {116return compare(GT, on1, on2);117}118119private static int runTest(char comparator, String on1, String on2) {120System.out.println("----------------------------------------------");121boolean ok = false;122boolean lt = lessThan(on1, on2);123boolean eq = equalTo(on1, on2);124boolean gt = greaterThan(on1, on2);125switch (comparator) {126case LT:127ok = lt && !eq && !gt;128System.out.println("Comparison result: LessThan");129break;130case EQ:131ok = !lt && eq && !gt;132System.out.println("Comparison result: EqualTo");133break;134case GT:135ok = !lt && !eq && gt;136System.out.println("Comparison result: GreaterThan");137break;138default:139throw new IllegalArgumentException(140"Test incorrect: case: " + comparator);141}142if (ok)143System.out.println("Test passed!");144else145System.out.println("Test failed!");146System.out.println("----------------------------------------------");147return ok ? 0 : 1;148}149150public static void main(String[] args) throws Exception {151152int error = 0;153154// Check null values155//156System.out.println("----------------------------------------------");157System.out.println("Test ObjectName.compareTo(null)");158try {159new ObjectName("d:k=v").compareTo(null);160error++;161System.out.println("Didn't get expected NullPointerException!");162System.out.println("Test failed!");163} catch (NullPointerException e) {164System.out.println("Got expected exception = " + e.toString());165System.out.println("Test passed!");166} catch (Exception e) {167error++;168System.out.println("Got unexpected exception = " + e.toString());169System.out.println("Test failed!");170}171System.out.println("----------------------------------------------");172173// Compare ObjectNames174//175for (int i = 0; i < tests.length; i++)176error += runTest(tests[i][0].charAt(0), tests[i][1], tests[i][2]);177178if (error > 0) {179final String msg = "Test FAILED! Got " + error + " error(s)";180System.out.println(msg);181throw new IllegalArgumentException(msg);182} else {183System.out.println("Test PASSED!");184}185}186}187188189