1 /* 2 * Copyright (c) 2001, 2014, 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. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 import java.awt.datatransfer.DataFlavor; 27 import java.awt.datatransfer.SystemFlavorMap; 28 import java.util.Arrays; 29 import java.util.Hashtable; 30 import java.util.Vector; 31 32 /* 33 * @test 34 * @summary To test SystemFlavorMap method 35 * addUnencodedNativeForFlavor(DataFlavor flav, String nat) 36 * with valid natives and DataFlavors. Specifically test for 37 * adding new mappings, one-way and two-way, and to update 38 * existing mappings. 39 * @author Rick Reynaga (rick.reynaga@eng.sun.com) area=Clipboard 40 * @run main AddNativeForFlavorTest 41 */ 42 43 public class AddNativeForFlavorTest { 44 45 SystemFlavorMap flavorMap; 46 Vector comp1, comp2, comp3; 47 Hashtable hash; 48 int hashSize; 49 50 String test_native1, test_native2, test_native3, test_native4; 51 String[] test_natives_set1, test_natives_set2; 52 DataFlavor test_flav; 53 DataFlavor[] test_flavors_set; 54 55 public static void main(String[] args) throws Exception { 56 new AddNativeForFlavorTest().doTest(); 57 } 58 59 public void doTest() throws Exception { 60 // Initialize DataFlavors and arrays used for test data 61 initMappings(); 62 63 flavorMap = (SystemFlavorMap)SystemFlavorMap.getDefaultFlavorMap(); 64 65 // Get all the native strings and preferred DataFlavor mappings 66 hash = new Hashtable(flavorMap.getFlavorsForNatives(null)); 67 hashSize = hash.size(); 68 69 // Setup One-way Mappings 70 System.out.println("One-way Mappings Test"); 71 flavorMap.addUnencodedNativeForFlavor(test_flav, test_native1); 72 flavorMap.addUnencodedNativeForFlavor(test_flav, test_native2); 73 74 // Confirm mapping with getNativesForFlavor 75 comp1 = new Vector(Arrays.asList(test_natives_set1)); 76 comp2 = new Vector(flavorMap.getNativesForFlavor(test_flav)); 77 78 if ( !comp1.equals(comp2)) { 79 throw new RuntimeException("\n*** After setting up one-way mapping" + 80 "\nwith addUnencodedNativeForFlavor(DataFlavor flav, String nat)" + 81 "\nthe mappings returned from getNativesForFlavor() do not match" + 82 "\noriginal mappings."); 83 } 84 else 85 System.out.println("One-way: Test Passes"); 86 87 // Setup Two-way Mapping 88 System.out.println("Two-way Mappings Test"); 89 flavorMap.addFlavorForUnencodedNative(test_native1, test_flav); 90 flavorMap.addFlavorForUnencodedNative(test_native2, test_flav); 91 92 // Confirm mapping with getFlavorsForNative 93 comp1 = new Vector(Arrays.asList(test_flavors_set)); 94 comp2 = new Vector(flavorMap.getFlavorsForNative(test_native1)); 95 comp3 = new Vector(flavorMap.getFlavorsForNative(test_native2)); 96 97 if ( !(comp1.equals(comp2)) || !(comp1.equals(comp3))) { 98 throw new RuntimeException("\n*** After setting up two-way mapping" + 99 "\nwith addFlavorForUnencodedNative(String nat, DataFlavor flav)" + 100 "\nthe mappings returned from getFlavorsForNative() do not match" + 101 "\noriginal mappings."); 102 } 103 else 104 System.out.println("Two-way (DataFlavor): Test Passes"); 105 106 // Check first native mapping 107 comp1 = new Vector(Arrays.asList(test_natives_set1)); 108 comp2 = new Vector(flavorMap.getNativesForFlavor(test_flav)); 109 110 if ( !comp1.equals(comp2)) { 111 throw new RuntimeException("\n*** After setting up two-way mapping" + 112 "\nwith addUnencodedNativeForFlavor(DataFlavor flav, String nat)" + 113 "\nthe mappings returned from getNativesForFlavor() do not match" + 114 "\noriginal mappings."); 115 } 116 else 117 System.out.println("Two-way (String native): Test Passes"); 118 119 // Modify an existing mapping test 120 System.out.println("Modify Existing Mappings Test"); 121 flavorMap.addUnencodedNativeForFlavor(test_flav, test_native3); 122 flavorMap.addUnencodedNativeForFlavor(test_flav, test_native4); 123 124 // Confirm mapping with getNativesForFlavor 125 comp1 = new Vector(Arrays.asList(test_natives_set2)); 126 comp2 = new Vector(flavorMap.getNativesForFlavor(test_flav)); 127 128 if ( !comp1.equals(comp2)) { 129 throw new RuntimeException("\n*** After modifying an existing mapping" + 130 "\nwith addUnencodedNativeForFlavor(DataFlavor flav, String nat)" + 131 "\nthe mappings returned from getNativesForFlavor() do not match" + 132 "\nupdated mappings."); 133 } 134 else 135 System.out.println("Modify Existing Mappings: Test Passes"); 136 137 } 138 139 public void initMappings() throws Exception { 140 //create String natives 141 test_native1 = "TEST1"; 142 test_native2 = "TEST2"; 143 test_native3 = "TEST3"; 144 test_native4 = "TEST4"; 145 146 test_flav = new DataFlavor(Class.forName("java.awt.Label"), "test1"); 147 148 //create and initialize DataFlavor arrays 149 test_flavors_set = new DataFlavor[] {test_flav}; 150 151 //create and initialize String native arrays 152 test_natives_set1 = new String[] {test_native1, test_native2}; 153 test_natives_set2 = new String[] {test_native1, test_native2, test_native3, test_native4}; 154 } 155 } 156