]> source.dussan.org Git - sonarqube.git/blob
58ed17a4c3516c8a2f2f47f307011f10d2252b39
[sonarqube.git] /
1 /*
2  * Sonar, open source software quality management tool.
3  * Copyright (C) 2008-2012 SonarSource
4  * mailto:contact AT sonarsource DOT com
5  *
6  * Sonar is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 3 of the License, or (at your option) any later version.
10  *
11  * Sonar is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with Sonar; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
19  */
20 package org.sonar.java.bytecode.loader;
21
22 import static org.hamcrest.CoreMatchers.nullValue;
23 import static org.hamcrest.Matchers.allOf;
24 import static org.hamcrest.Matchers.endsWith;
25 import static org.hamcrest.Matchers.notNullValue;
26 import static org.hamcrest.Matchers.startsWith;
27 import static org.junit.Assert.assertThat;
28 import static org.junit.Assert.fail;
29
30 import java.io.File;
31 import java.net.URL;
32
33 import org.junit.Test;
34 import org.sonar.java.ast.SquidTestUtils;
35
36 public class FileSystemLoaderTest {
37
38   @Test(expected = IllegalArgumentException.class)
39   public void shouldThrowIllegalArgumentException() throws Exception {
40     new FileSystemLoader(null);
41   }
42
43   @Test
44   public void testFindResource() throws Exception {
45     File dir = SquidTestUtils.getFile("/bytecode/bin/");
46     FileSystemLoader loader = new FileSystemLoader(dir);
47
48     assertThat(loader.findResource("notfound"), nullValue());
49
50     URL url = loader.findResource("tags/TagName.class");
51     assertThat(url, notNullValue());
52     assertThat(url.toString(), allOf(startsWith("file:"), endsWith("TagName.class")));
53
54     loader.close();
55
56     try {
57       loader.findResource("tags/TagName.class");
58       fail();
59     } catch (IllegalStateException e) {
60       // ok
61     }
62   }
63
64   @Test
65   public void testLoadBytes() throws Exception {
66     File dir = SquidTestUtils.getFile("/bytecode/bin/");
67     FileSystemLoader loader = new FileSystemLoader(dir);
68
69     assertThat(loader.loadBytes("notfound"), nullValue());
70
71     assertThat(loader.loadBytes("tags/TagName.class"), notNullValue());
72
73     loader.close();
74
75     try {
76       loader.loadBytes("tags/TagName.class");
77       fail();
78     } catch (IllegalStateException e) {
79       // ok
80     }
81   }
82
83   @Test
84   public void closeCanBeCalledMultipleTimes() throws Exception {
85     File dir = SquidTestUtils.getFile("/bytecode/bin/");
86     FileSystemLoader loader = new FileSystemLoader(dir);
87     loader.close();
88     loader.close();
89   }
90
91 }