1 /* 2 * Copyright (c) 2001, 2015, 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 * setNativesForFlavor(DataFlavor flav, String[] natives) 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 * @modules java.datatransfer 41 * @run main SetNativesForFlavorTest 42 */ 43 44 public class SetNativesForFlavor { 45 46 SystemFlavorMap flavorMap; 47 Vector comp1, comp2, comp3; 48 Hashtable hash; 49 int hashSize; 50 51 String test_native1, test_native2, test_native3, test_native4; 52 String[] test_natives_set1, test_natives_set2; 53 DataFlavor test_flavor1, test_flavor2, test_flavor3, test_flavor4; 54 DataFlavor[] test_flavors_set1, test_flavors_set2; 55 56 public static void main (String[] args) throws Exception { 57 new SetNativesForFlavor().doTest(); 58 } 59 60 public void doTest() throws Exception { 61 // Initialize DataFlavors and arrays used for test data 62 initMappings(); 63 64 flavorMap = (SystemFlavorMap)SystemFlavorMap.getDefaultFlavorMap(); 65 66 // Get all the native strings and preferred DataFlavor mappings 67 hash = new Hashtable(flavorMap.getFlavorsForNatives(null)); 68 hashSize = hash.size(); 69 70 // Setup One-way Mappings 71 System.out.println("One-way Mappings Test"); 72 flavorMap.setNativesForFlavor(test_flavor1, test_natives_set1); 73 flavorMap.setNativesForFlavor(test_flavor2, test_natives_set1); 74 75 // Confirm mapping with getNativesForFlavor 76 comp1 = new Vector(Arrays.asList(test_natives_set1)); 77 comp2 = new Vector(flavorMap.getNativesForFlavor(test_flavor1)); 78 comp3 = new Vector(flavorMap.getNativesForFlavor(test_flavor2)); 79 80 if ( !(comp1.equals(comp2)) || !(comp1.equals(comp3))) { 81 throw new RuntimeException("\n*** After setting up one-way mapping" + 82 "\nwith setNativesForFlavor(DataFlavor flav, String[] natives)" + 83 "\nthe mappings returned from getNativesForFlavor() do not match" + 84 "\noriginal mappings."); 85 } 86 else 87 System.out.println("One-way: Test Passes"); 88 89 // Setup Two-way Mapping 90 System.out.println("Two-way Mappings Test"); 91 flavorMap.setFlavorsForNative(test_native1, test_flavors_set1); 92 flavorMap.setFlavorsForNative(test_native2, test_flavors_set1); 93 94 // Confirm mapping with getFlavorsForNative 95 comp1 = new Vector(Arrays.asList(test_flavors_set1)); 96 comp2 = new Vector(flavorMap.getFlavorsForNative(test_native1)); 97 comp3 = new Vector(flavorMap.getFlavorsForNative(test_native2)); 98 99 if ( !(comp1.equals(comp2)) || !(comp1.equals(comp3))) { 100 throw new RuntimeException("\n*** After setting up two-way mapping" + 101 "\nwith setFlavorsForNative(string nat, DataFlavor[] flavors)" + 102 "\nthe mappings returned from getFlavorsForNative() do not match" + 103 "\noriginal mappings."); 104 } 105 else 106 System.out.println("Two-way (DataFlavor): Test Passes"); 107 108 // Check first native mapping 109 comp1 = new Vector(Arrays.asList(test_natives_set1)); 110 comp2 = new Vector(flavorMap.getNativesForFlavor(test_flavor1)); 111 comp3 = new Vector(flavorMap.getNativesForFlavor(test_flavor2)); 112 113 if ( !(comp1.equals(comp2)) || !(comp1.equals(comp3))) { 114 throw new RuntimeException("\n*** After setting up two-way mapping" + 115 "\nwith setNativesForFlavor(DataFlavor flav, String[] natives)" + 116 "\nthe mappings returned from getNativesForFlavor() do not match" + 117 "\noriginal mappings."); 118 } 119 else 120 System.out.println("Two-way (String native): Test Passes"); 121 122 // Modify an existing mapping test 123 System.out.println("Modify Existing Mappings Test"); 124 flavorMap.setNativesForFlavor(test_flavor1, test_natives_set2); 125 flavorMap.setNativesForFlavor(test_flavor2, test_natives_set2); 126 127 // Confirm mapping with getNativesForFlavor 128 comp1 = new Vector(Arrays.asList(test_natives_set2)); 129 comp2 = new Vector(flavorMap.getNativesForFlavor(test_flavor1)); 130 comp3 = new Vector(flavorMap.getNativesForFlavor(test_flavor2)); 131 132 if ( !(comp1.equals(comp2)) || !(comp1.equals(comp3))) { 133 throw new RuntimeException("\n*** After modifying an existing mapping" + 134 "\nwith setNativesForFlavor(DataFlavor flav, String[] natives)" + 135 "\nthe mappings returned from getNativesForFlavor() do not match" + 136 "\noriginal mappings."); 137 } 138 else 139 System.out.println("Modify Existing Mappings: Test Passes"); 140 141 } 142 143 // Initialize mapping variables used in this test 144 public void initMappings() throws Exception { 145 //create String natives 146 test_native1 = "TEST1"; 147 test_native2 = "TEST2"; 148 test_native3 = "TEST3"; 149 test_native4 = "TEST4"; 150 151 test_flavor1 = new DataFlavor(Class.forName("java.awt.Label"), "test1"); 152 test_flavor2 = new DataFlavor(Class.forName("java.awt.Button"), "test2"); 153 test_flavor3 = new DataFlavor(Class.forName("java.awt.Checkbox"), "test3"); 154 test_flavor4 = new DataFlavor(Class.forName("java.awt.List"), "test4"); 155 156 //create and initialize DataFlavor arrays 157 test_flavors_set1 = new DataFlavor[] {test_flavor1, test_flavor2}; 158 test_flavors_set2 = new DataFlavor[] {test_flavor3, test_flavor4}; 159 160 //create and initialize String native arrays 161 test_natives_set1 = new String[] {test_native1, test_native2}; 162 test_natives_set2 = new String[] {test_native3, test_native4}; 163 } 164 } 165