1 19 20 package org.netbeans.modules.editor.mimelookup; 21 22 import java.util.Collection ; 23 import org.netbeans.api.editor.mimelookup.MimeLookup; 24 import org.netbeans.api.editor.mimelookup.MimePath; 25 import org.netbeans.junit.NbTestCase; 26 import org.openide.util.Lookup; 27 import org.openide.util.LookupEvent; 28 import org.openide.util.LookupListener; 29 30 34 public class MimePathLookupTest extends NbTestCase { 35 36 37 public MimePathLookupTest(String name) { 38 super(name); 39 } 40 41 protected void setUp() throws java.lang.Exception { 42 EditorTestLookup.setLookup(new String [0], getWorkDir(), new Object [] {}, 44 getClass().getClassLoader() 45 ); 46 } 47 48 public void testAddingMimeDataProvider() throws Exception { 49 checkAddingMimeDataProvider( 50 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeDataProvider.instance", 51 DummyMimeDataProvider.Marker.class 52 ); 53 checkAddingMimeDataProvider( 54 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeLookupInitializer.instance", 55 DummyMimeLookupInitializer.Marker.class 56 ); 57 } 58 59 private <T> void checkAddingMimeDataProvider(String instanceFile, Class <T> markerClass) throws Exception { 60 MimePath path = MimePath.get("text/x-java"); 61 Lookup lookup = MimeLookup.getLookup(path); 62 63 Collection markers = lookup.lookupAll(markerClass); 64 assertEquals("There should be no markers", 0, markers.size()); 65 66 TestUtilities.createFile(getWorkDir(), instanceFile); 68 TestUtilities.sleepForWhile(); 69 70 markers = lookup.lookupAll(markerClass); 71 assertEquals("No markers found", 1, markers.size()); 72 } 73 74 public void testAddingMimeDataProvider2() throws Exception { 75 checkAddingMimeDataProvider( 76 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeDataProvider.instance", 77 DummyMimeDataProvider.Marker.class 78 ); 79 checkAddingMimeDataProvider( 80 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeLookupInitializer.instance", 81 DummyMimeLookupInitializer.Marker.class 82 ); 83 } 84 85 private <T> void checkAddingMimeDataProvider2(String instanceFile, Class <T> markerClass) throws Exception { 86 MimePath path = MimePath.get("text/x-java"); 87 88 Lookup.Result result = MimeLookup.getLookup(path).lookupResult(markerClass); 89 Collection markers = result.allInstances(); 90 assertEquals("There should be no markers", 0, markers.size()); 91 92 L listener = new L(); 93 result.addLookupListener(listener); 94 assertEquals("There should be no changes received", 0, listener.resultChangedCnt); 95 96 TestUtilities.createFile(getWorkDir(), instanceFile); 98 TestUtilities.sleepForWhile(); 99 100 assertEquals("No changes received", 1, listener.resultChangedCnt); 101 markers = result.allInstances(); 102 assertEquals("No markers found", 1, markers.size()); 103 } 104 105 public void testRemovingMimeDataProvider() throws Exception { 106 checkRemovingMimeDataProvider( 107 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeDataProvider.instance", 108 DummyMimeDataProvider.Marker.class 109 ); 110 checkRemovingMimeDataProvider( 111 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeLookupInitializer.instance", 112 DummyMimeLookupInitializer.Marker.class 113 ); 114 } 115 116 private <T> void checkRemovingMimeDataProvider(String instanceFile, Class <T> markerClass) throws Exception { 117 TestUtilities.createFile(getWorkDir(), instanceFile); 118 TestUtilities.sleepForWhile(); 119 120 MimePath path = MimePath.get("text/x-java"); 121 Lookup lookup = MimeLookup.getLookup(path); 122 123 Collection markers = lookup.lookupAll(markerClass); 124 assertEquals("No markers found", 1, markers.size()); 125 126 TestUtilities.deleteFile(getWorkDir(), instanceFile); 127 TestUtilities.sleepForWhile(); 128 129 markers = lookup.lookupAll(markerClass); 130 assertEquals("There should be no markers", 0, markers.size()); 131 } 132 133 public void testRemovingMimeDataProvider2() throws Exception { 134 checkRemovingMimeDataProvider2( 135 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeDataProvider.instance", 136 DummyMimeDataProvider.Marker.class 137 ); 138 checkRemovingMimeDataProvider2( 139 "Services/org-netbeans-modules-editor-mimelookup-DummyMimeLookupInitializer.instance", 140 DummyMimeLookupInitializer.Marker.class 141 ); 142 } 143 144 private <T> void checkRemovingMimeDataProvider2(String instanceFile, Class <T> markerClass) throws Exception { 145 TestUtilities.createFile(getWorkDir(), instanceFile); 146 TestUtilities.sleepForWhile(); 147 148 MimePath path = MimePath.get("text/x-java"); 149 Lookup.Result result = MimeLookup.getLookup(path).lookupResult(markerClass); 150 Collection markers = result.allInstances(); 151 assertEquals("No markers found", 1, markers.size()); 152 153 L listener = new L(); 154 result.addLookupListener(listener); 155 assertEquals("There should be no changes received", 0, listener.resultChangedCnt); 156 157 TestUtilities.deleteFile(getWorkDir(), instanceFile); 159 TestUtilities.sleepForWhile(); 160 161 assertEquals("No changes received", 1, listener.resultChangedCnt); 162 markers = result.allInstances(); 163 assertEquals("There should be no markers", 0, markers.size()); 164 } 165 166 private static class L implements LookupListener { 167 public int resultChangedCnt = 0; 168 169 public void resultChanged(LookupEvent ev) { 170 resultChangedCnt++; 171 } 172 } } 174 | Popular Tags |