1   package org.naftulin.classpathexplorer.dublicate.imlp;
2   
3   import org.naftulin.classpathexplorer.AccessibleResource;
4   import org.naftulin.classpathexplorer.dublicate.imlp.AccessibleArchive;
5   import org.naftulin.classpathexplorer.dublicate.imlp.ResourceRegistry;
6   
7   import junit.framework.TestCase;
8   
9   public class ResourceRegistryTest extends TestCase {
10  
11  	/*
12  	 * Test method for 'com.naftulin.classpathexplorer.dublicate.imlp.ResourceRegistry.getResourcesByFullName(String)'
13  	 */
14  	public void testGetResourcesByFullName() {
15  		ResourceRegistry registry = ResourceRegistry.getInstance();
16  		registry.clearRegistry();
17  		AccessibleResourceDummy dummy = new AccessibleResourceDummy();
18  		dummy.setPath("a/b/c/");
19  		dummy.setName("D.class");
20  		registry.addResource(dummy);
21  		
22  		AccessibleResource[] resourceArr = registry.getResourcesByFullName("a/b/c/D.class");
23  		assertEquals("found elements", 1, resourceArr.length);
24  		
25  		resourceArr = registry.getResourcesByFullName("nothing/nothing/Nothing.class");
26  		assertEquals("found elements", 0, resourceArr.length);
27  		
28  		registry.addResource(dummy);
29  		resourceArr = registry.getResourcesByFullName("a/b/c/D.class");
30  		assertEquals("found elements", 2, resourceArr.length);
31  		assertTrue("dublicated resources", registry.isAnyResourceDublicated());
32  		assertTrue("dublicated resource", registry.isResourceDublicated(dummy));
33  	}
34  
35  	/*
36  	 * Test method for 'com.naftulin.classpathexplorer.dublicate.imlp.ResourceRegistry.getResroucesByName(String)'
37  	 */
38  	public void testGetResroucesByName() {
39  		ResourceRegistry registry = ResourceRegistry.getInstance();
40  		registry.clearRegistry();
41  		AccessibleResourceDummy dummy = new AccessibleResourceDummy();
42  		dummy.setPath("a/b/c/D.class");
43  		dummy.setName("D.class");
44  		registry.addResource(dummy);
45  		
46  		AccessibleResource[] resourceArr = registry.getResroucesByName(dummy.getName());
47  		assertEquals("found elements", 1, resourceArr.length);
48  		
49  		resourceArr = registry.getResroucesByName("nothing/nothing/Nothing.class");
50  		assertEquals("found elements", 0, resourceArr.length);
51  		
52  		registry.addResource(dummy);
53  		resourceArr = registry.getResroucesByName(dummy.getName());
54  		assertEquals("found elements", 2, resourceArr.length);
55  		assertTrue("dublicated resources", registry.isAnyResourceDublicated());
56  		assertTrue("dublicated resource", registry.isResourceDublicated(dummy));
57  		
58  		AccessibleResourceDummy dummy1 = new AccessibleResourceDummy();
59  		dummy1.setPath("a/b/z/D.class");
60  		dummy1.setName("D.class");
61  		registry.addResource(dummy);
62  		
63  		resourceArr = registry.getResroucesByName(dummy.getName());
64  		assertEquals("found elements", 3, resourceArr.length);
65  		assertFalse("dublicated resource", registry.isResourceDublicated(dummy1));
66  		
67  	}
68  
69  	/*
70  	 * Test method for 'com.naftulin.classpathexplorer.dublicate.imlp.ResourceRegistry.getResrouces()'
71  	 */
72  	public void testGetResrouces() {
73  		ResourceRegistry registry = ResourceRegistry.getInstance();
74  		registry.clearRegistry();
75  		AccessibleResourceDummy dummy = new AccessibleResourceDummy();
76  		dummy.setPath("a/b/c/D.class");
77  		dummy.setName("D.class");
78  		registry.addResource(dummy);
79  		registry.addResource(dummy);
80  		
81  		AccessibleResourceDummy dummy1 = new AccessibleResourceDummy();
82  		dummy1.setPath("a/b/z/D.class");
83  		dummy1.setName("D.class");
84  		registry.addResource(dummy);
85  		
86  		assertEquals("resources", 3, registry.getResrouces().length);
87  	}
88  
89  	/*
90  	 * Test method for 'com.naftulin.classpathexplorer.dublicate.imlp.ResourceRegistry.isResourceDublicated(AccessibleResource)'
91  	 */
92  	public void testIsResourceDublicated() {
93  		ResourceRegistry registry = ResourceRegistry.getInstance();
94  		registry.clearRegistry();
95  		AccessibleResourceDummy dummy = new AccessibleResourceDummy();
96  		dummy.setPath("a/b/c/D.class");
97  		dummy.setName("D.class");
98  		registry.addResource(dummy);
99  		registry.addResource(dummy);
100 		assertTrue("resource duplicated", registry.isResourceDublicated(dummy));
101 		
102 		AccessibleResourceDummy dummy1 = new AccessibleResourceDummy();
103 		dummy1.setPath("a/b/z/D.class");
104 		dummy1.setName("D.class");
105 		registry.addResource(dummy);
106 		assertFalse("resource duplicated", registry.isResourceDublicated(dummy1));
107 	}
108 
109 	/*
110 	 * Test method for 'com.naftulin.classpathexplorer.dublicate.imlp.ResourceRegistry.isAnyResourceDublicated()'
111 	 */
112 	public void testIsAnyResourceDublicated() {
113 		ResourceRegistry registry = ResourceRegistry.getInstance();
114 		registry.clearRegistry();
115 		AccessibleResourceDummy dummy = new AccessibleResourceDummy();
116 		dummy.setPath("a/b/c/D.class");
117 		dummy.setName("D.class");
118 		registry.addResource(dummy);
119 		registry.addResource(dummy);
120 		assertTrue("resource duplicated", registry.isAnyResourceDublicated());
121 		
122 		AccessibleResourceDummy dummy1 = new AccessibleResourceDummy();
123 		dummy1.setPath("a/b/z/D.class");
124 		dummy1.setName("D.class");
125 		registry.addResource(dummy);
126 		assertTrue("resource duplicated", registry.isAnyResourceDublicated());
127 	}
128 
129 	private static class AccessibleResourceDummy implements AccessibleResource {
130 		private AccessibleArchive archive;
131 		private String fullPath;
132 		private long lastModified;
133 		private String name;
134 		private String path;
135 		public AccessibleArchive getArchive() {
136 			return archive;
137 		}
138 		public void setArchive(AccessibleArchive archive) {
139 			this.archive = archive;
140 		}
141 		public String getFullPath() {
142 			return fullPath;
143 		}
144 		public void setFullPath(String fullPath) {
145 			this.fullPath = fullPath;
146 		}
147 		public long getLastModified() {
148 			return lastModified;
149 		}
150 		public void setLastModified(long lastModified) {
151 			this.lastModified = lastModified;
152 		}
153 		public String getName() {
154 			return name;
155 		}
156 		public void setName(String name) {
157 			this.name = name;
158 		}
159 		public String getPath() {
160 			return path;
161 		}
162 		public String getKey() { 
163 			return path +  name;
164 		}
165 		public void setPath(String path) {
166 			this.path = path;
167 		}
168 		public String toXml() {
169 			return "<myXml/>";
170 		}
171 		
172 		
173 		
174 	}
175 }