3789983e89
Reviewed-by: darcy, ihse
188 lines
6.7 KiB
Java
188 lines
6.7 KiB
Java
/*
|
|
* Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* This code is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 only, as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* version 2 for more details (a copy is included in the LICENSE file that
|
|
* accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU General Public License version
|
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*
|
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
* or visit www.oracle.com if you need additional information or have any
|
|
* questions.
|
|
*/
|
|
|
|
/*
|
|
* @test
|
|
* @bug 5036680
|
|
* @summary Test the ObjectName.compareTo() method.
|
|
* @author Luis-Miguel Alventosa
|
|
*
|
|
* @run clean ComparatorTest
|
|
* @run build ComparatorTest
|
|
* @run main ComparatorTest
|
|
*/
|
|
|
|
import javax.management.*;
|
|
|
|
public class ComparatorTest {
|
|
|
|
private static final char LT = '<';
|
|
private static final char EQ = '=';
|
|
private static final char GT = '>';
|
|
|
|
private static final String tests[][] = {
|
|
//
|
|
// domains
|
|
//
|
|
{ String.valueOf(LT), ":k1=v1", "d:k1=v1" },
|
|
{ String.valueOf(EQ), "d:k1=v1", "d:k1=v1" },
|
|
{ String.valueOf(GT), "d2:k1=v1", "d1:k1=v1" },
|
|
//
|
|
// "type=" key property
|
|
//
|
|
{ String.valueOf(GT), "d:type=a,k1=v1", "d:k1=v1" },
|
|
{ String.valueOf(GT), "d:type=a,k1=v1", "d:type=" },
|
|
{ String.valueOf(GT), "d:type=a,k1=v1", "d:type=,k1=v1" },
|
|
{ String.valueOf(LT), "d:type=a,k1=v1", "d:type=b,k1=v1" },
|
|
{ String.valueOf(LT), "d:type=a,k2=v2", "d:type=b,k1=v1" },
|
|
//
|
|
// canonical form
|
|
//
|
|
{ String.valueOf(EQ), "d:k1=v1,k2=v2", "d:k2=v2,k1=v1" },
|
|
{ String.valueOf(LT), "d:k1=v1,k2=v2", "d:k1=v1,k3=v3" },
|
|
{ String.valueOf(LT), "d:k1=v1,k2=v2", "d:k2=v2,k1=v1,k3=v3" },
|
|
//
|
|
// wildcards
|
|
//
|
|
{ String.valueOf(LT), "d:k1=v1", "d:k1=v1,*" },
|
|
{ String.valueOf(GT), "d:k1=v1,k2=v2", "d:k1=v1,*" },
|
|
{ String.valueOf(GT), "domain:k1=v1", "?:k1=v1" },
|
|
{ String.valueOf(GT), "domain:k1=v1", "*:k1=v1" },
|
|
{ String.valueOf(GT), "domain:k1=v1", "domai?:k1=v1" },
|
|
{ String.valueOf(GT), "domain:k1=v1", "domai*:k1=v1" },
|
|
{ String.valueOf(GT), "domain:k1=v1", "do?ain:k1=v1" },
|
|
{ String.valueOf(GT), "domain:k1=v1", "do*ain:k1=v1" },
|
|
};
|
|
|
|
private static boolean compare(char comparator, String on1, String on2) {
|
|
boolean ok = false;
|
|
System.out.println("Test " + on1 + " " + comparator + " " + on2);
|
|
try {
|
|
ObjectName o1 = ObjectName.getInstance(on1);
|
|
ObjectName o2 = ObjectName.getInstance(on2);
|
|
int result = o1.compareTo(o2);
|
|
switch (comparator) {
|
|
case LT:
|
|
if (result < 0)
|
|
ok = true;
|
|
break;
|
|
case EQ:
|
|
if (result == 0)
|
|
ok = true;
|
|
break;
|
|
case GT:
|
|
if (result > 0)
|
|
ok = true;
|
|
break;
|
|
default:
|
|
throw new IllegalArgumentException(
|
|
"Test incorrect: case: " + comparator);
|
|
}
|
|
} catch (Exception e) {
|
|
ok = false;
|
|
System.out.println("Got Unexpected Exception = " + e.toString());
|
|
}
|
|
return ok;
|
|
}
|
|
|
|
private static boolean lessThan(String on1, String on2) {
|
|
return compare(LT, on1, on2);
|
|
}
|
|
|
|
private static boolean equalTo(String on1, String on2) {
|
|
return compare(EQ, on1, on2);
|
|
}
|
|
|
|
private static boolean greaterThan(String on1, String on2) {
|
|
return compare(GT, on1, on2);
|
|
}
|
|
|
|
private static int runTest(char comparator, String on1, String on2) {
|
|
System.out.println("----------------------------------------------");
|
|
boolean ok = false;
|
|
boolean lt = lessThan(on1, on2);
|
|
boolean eq = equalTo(on1, on2);
|
|
boolean gt = greaterThan(on1, on2);
|
|
switch (comparator) {
|
|
case LT:
|
|
ok = lt && !eq && !gt;
|
|
System.out.println("Comparison result: LessThan");
|
|
break;
|
|
case EQ:
|
|
ok = !lt && eq && !gt;
|
|
System.out.println("Comparison result: EqualTo");
|
|
break;
|
|
case GT:
|
|
ok = !lt && !eq && gt;
|
|
System.out.println("Comparison result: GreaterThan");
|
|
break;
|
|
default:
|
|
throw new IllegalArgumentException(
|
|
"Test incorrect: case: " + comparator);
|
|
}
|
|
if (ok)
|
|
System.out.println("Test passed!");
|
|
else
|
|
System.out.println("Test failed!");
|
|
System.out.println("----------------------------------------------");
|
|
return ok ? 0 : 1;
|
|
}
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
|
int error = 0;
|
|
|
|
// Check null values
|
|
//
|
|
System.out.println("----------------------------------------------");
|
|
System.out.println("Test ObjectName.compareTo(null)");
|
|
try {
|
|
new ObjectName("d:k=v").compareTo(null);
|
|
error++;
|
|
System.out.println("Didn't get expected NullPointerException!");
|
|
System.out.println("Test failed!");
|
|
} catch (NullPointerException e) {
|
|
System.out.println("Got expected exception = " + e.toString());
|
|
System.out.println("Test passed!");
|
|
} catch (Exception e) {
|
|
error++;
|
|
System.out.println("Got unexpected exception = " + e.toString());
|
|
System.out.println("Test failed!");
|
|
}
|
|
System.out.println("----------------------------------------------");
|
|
|
|
// Compare ObjectNames
|
|
//
|
|
for (int i = 0; i < tests.length; i++)
|
|
error += runTest(tests[i][0].charAt(0), tests[i][1], tests[i][2]);
|
|
|
|
if (error > 0) {
|
|
final String msg = "Test FAILED! Got " + error + " error(s)";
|
|
System.out.println(msg);
|
|
throw new IllegalArgumentException(msg);
|
|
} else {
|
|
System.out.println("Test PASSED!");
|
|
}
|
|
}
|
|
}
|