|
44 | 44 | import org.junit.jupiter.api.AfterEach; |
45 | 45 | import org.junit.jupiter.api.Nested; |
46 | 46 | import org.junit.jupiter.api.Test; |
47 | | -import org.junit.jupiter.params.ParameterizedTest; |
| 47 | +import org.junit.jupiter.params.ParameterizedClass; |
48 | 48 | import org.junit.jupiter.params.provider.Arguments; |
49 | 49 | import org.junit.jupiter.params.provider.MethodSource; |
50 | 50 |
|
|
68 | 68 | */ |
69 | 69 | class ResourceTests { |
70 | 70 |
|
71 | | - @ParameterizedTest |
| 71 | + @Nested |
| 72 | + @ParameterizedClass |
72 | 73 | @MethodSource("resource") |
73 | | - void resourceIsValid(Resource resource) throws Exception { |
74 | | - assertThat(resource.getFilename()).isEqualTo("ResourceTests.class"); |
75 | | - assertThat(resource.getURL().getFile()).endsWith("ResourceTests.class"); |
76 | | - assertThat(resource.exists()).isTrue(); |
77 | | - assertThat(resource.isReadable()).isTrue(); |
78 | | - assertThat(resource.contentLength()).isGreaterThan(0); |
79 | | - assertThat(resource.lastModified()).isGreaterThan(0); |
80 | | - assertThat(resource.getContentAsByteArray()).containsExactly(Files.readAllBytes(Path.of(resource.getURI()))); |
81 | | - } |
| 74 | + class ParameterizedResourceTests { |
82 | 75 |
|
83 | | - @ParameterizedTest |
84 | | - @MethodSource("resource") |
85 | | - void resourceCreateRelative(Resource resource) throws Exception { |
86 | | - Resource relative1 = resource.createRelative("ClassPathResourceTests.class"); |
87 | | - assertThat(relative1.getFilename()).isEqualTo("ClassPathResourceTests.class"); |
88 | | - assertThat(relative1.getURL().getFile().endsWith("ClassPathResourceTests.class")).isTrue(); |
89 | | - assertThat(relative1.exists()).isTrue(); |
90 | | - assertThat(relative1.isReadable()).isTrue(); |
91 | | - assertThat(relative1.contentLength()).isGreaterThan(0); |
92 | | - assertThat(relative1.lastModified()).isGreaterThan(0); |
93 | | - } |
| 76 | + private final Resource resource; |
94 | 77 |
|
95 | | - @ParameterizedTest |
96 | | - @MethodSource("resource") |
97 | | - void resourceCreateRelativeWithFolder(Resource resource) throws Exception { |
98 | | - Resource relative2 = resource.createRelative("support/PathMatchingResourcePatternResolverTests.class"); |
99 | | - assertThat(relative2.getFilename()).isEqualTo("PathMatchingResourcePatternResolverTests.class"); |
100 | | - assertThat(relative2.getURL().getFile()).endsWith("PathMatchingResourcePatternResolverTests.class"); |
101 | | - assertThat(relative2.exists()).isTrue(); |
102 | | - assertThat(relative2.isReadable()).isTrue(); |
103 | | - assertThat(relative2.contentLength()).isGreaterThan(0); |
104 | | - assertThat(relative2.lastModified()).isGreaterThan(0); |
105 | | - } |
| 78 | + public ParameterizedResourceTests(Resource resource) { |
| 79 | + this.resource = resource; |
| 80 | + } |
106 | 81 |
|
107 | | - @ParameterizedTest |
108 | | - @MethodSource("resource") |
109 | | - void resourceCreateRelativeWithDotPath(Resource resource) throws Exception { |
110 | | - Resource relative3 = resource.createRelative("../CollectionFactoryTests.class"); |
111 | | - assertThat(relative3.getFilename()).isEqualTo("CollectionFactoryTests.class"); |
112 | | - assertThat(relative3.getURL().getFile()).endsWith("CollectionFactoryTests.class"); |
113 | | - assertThat(relative3.exists()).isTrue(); |
114 | | - assertThat(relative3.isReadable()).isTrue(); |
115 | | - assertThat(relative3.contentLength()).isGreaterThan(0); |
116 | | - assertThat(relative3.lastModified()).isGreaterThan(0); |
117 | | - } |
| 82 | + @Test |
| 83 | + void resourceIsValid() throws Exception { |
| 84 | + assertThat(resource.getFilename()).isEqualTo("ResourceTests.class"); |
| 85 | + assertThat(resource.getURL().getFile()).endsWith("ResourceTests.class"); |
| 86 | + assertThat(resource.exists()).isTrue(); |
| 87 | + assertThat(resource.isReadable()).isTrue(); |
| 88 | + assertThat(resource.contentLength()).isGreaterThan(0); |
| 89 | + assertThat(resource.lastModified()).isGreaterThan(0); |
| 90 | + assertThat(resource.getContentAsByteArray()).containsExactly(Files.readAllBytes(Path.of(resource.getURI()))); |
| 91 | + } |
118 | 92 |
|
119 | | - @ParameterizedTest |
120 | | - @MethodSource("resource") |
121 | | - void resourceCreateRelativeUnknown(Resource resource) throws Exception { |
122 | | - Resource relative4 = resource.createRelative("X.class"); |
123 | | - assertThat(relative4.exists()).isFalse(); |
124 | | - assertThat(relative4.isReadable()).isFalse(); |
125 | | - assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::contentLength); |
126 | | - assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::lastModified); |
127 | | - assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getInputStream); |
128 | | - assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::readableChannel); |
129 | | - assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getContentAsByteArray); |
130 | | - assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(() -> relative4.getContentAsString(UTF_8)); |
131 | | - } |
| 93 | + @Test |
| 94 | + void resourceCreateRelative() throws Exception { |
| 95 | + Resource relative1 = resource.createRelative("ClassPathResourceTests.class"); |
| 96 | + assertThat(relative1.getFilename()).isEqualTo("ClassPathResourceTests.class"); |
| 97 | + assertThat(relative1.getURL().getFile().endsWith("ClassPathResourceTests.class")).isTrue(); |
| 98 | + assertThat(relative1.exists()).isTrue(); |
| 99 | + assertThat(relative1.isReadable()).isTrue(); |
| 100 | + assertThat(relative1.contentLength()).isGreaterThan(0); |
| 101 | + assertThat(relative1.lastModified()).isGreaterThan(0); |
| 102 | + } |
132 | 103 |
|
133 | | - private static Stream<Arguments> resource() throws URISyntaxException { |
134 | | - URL resourceClass = ResourceTests.class.getResource("ResourceTests.class"); |
135 | | - Path resourceClassFilePath = Paths.get(resourceClass.toURI()); |
136 | | - return Stream.of( |
137 | | - argumentSet("ClassPathResource", new ClassPathResource("org/springframework/core/io/ResourceTests.class")), |
138 | | - argumentSet("ClassPathResource with ClassLoader", new ClassPathResource("org/springframework/core/io/ResourceTests.class", ResourceTests.class.getClassLoader())), |
139 | | - argumentSet("ClassPathResource with Class", new ClassPathResource("ResourceTests.class", ResourceTests.class)), |
140 | | - argumentSet("FileSystemResource", new FileSystemResource(resourceClass.getFile())), |
141 | | - argumentSet("FileSystemResource with File", new FileSystemResource(new File(resourceClass.getFile()))), |
142 | | - argumentSet("FileSystemResource with File path", new FileSystemResource(resourceClassFilePath)), |
143 | | - argumentSet("UrlResource", new UrlResource(resourceClass)) |
144 | | - ); |
145 | | - } |
| 104 | + @Test |
| 105 | + void resourceCreateRelativeWithFolder() throws Exception { |
| 106 | + Resource relative2 = resource.createRelative("support/PathMatchingResourcePatternResolverTests.class"); |
| 107 | + assertThat(relative2.getFilename()).isEqualTo("PathMatchingResourcePatternResolverTests.class"); |
| 108 | + assertThat(relative2.getURL().getFile()).endsWith("PathMatchingResourcePatternResolverTests.class"); |
| 109 | + assertThat(relative2.exists()).isTrue(); |
| 110 | + assertThat(relative2.isReadable()).isTrue(); |
| 111 | + assertThat(relative2.contentLength()).isGreaterThan(0); |
| 112 | + assertThat(relative2.lastModified()).isGreaterThan(0); |
| 113 | + } |
146 | 114 |
|
| 115 | + @Test |
| 116 | + void resourceCreateRelativeWithDotPath() throws Exception { |
| 117 | + Resource relative3 = resource.createRelative("../CollectionFactoryTests.class"); |
| 118 | + assertThat(relative3.getFilename()).isEqualTo("CollectionFactoryTests.class"); |
| 119 | + assertThat(relative3.getURL().getFile()).endsWith("CollectionFactoryTests.class"); |
| 120 | + assertThat(relative3.exists()).isTrue(); |
| 121 | + assertThat(relative3.isReadable()).isTrue(); |
| 122 | + assertThat(relative3.contentLength()).isGreaterThan(0); |
| 123 | + assertThat(relative3.lastModified()).isGreaterThan(0); |
| 124 | + } |
| 125 | + |
| 126 | + @Test |
| 127 | + void resourceCreateRelativeUnknown() throws Exception { |
| 128 | + Resource relative4 = resource.createRelative("X.class"); |
| 129 | + assertThat(relative4.exists()).isFalse(); |
| 130 | + assertThat(relative4.isReadable()).isFalse(); |
| 131 | + assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::contentLength); |
| 132 | + assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::lastModified); |
| 133 | + assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getInputStream); |
| 134 | + assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::readableChannel); |
| 135 | + assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(relative4::getContentAsByteArray); |
| 136 | + assertThatExceptionOfType(FileNotFoundException.class).isThrownBy(() -> relative4.getContentAsString(UTF_8)); |
| 137 | + } |
| 138 | + |
| 139 | + private static Stream<Arguments> resource() throws URISyntaxException { |
| 140 | + URL resourceClass = ResourceTests.class.getResource("ResourceTests.class"); |
| 141 | + Path resourceClassFilePath = Paths.get(resourceClass.toURI()); |
| 142 | + return Stream.of( |
| 143 | + argumentSet("ClassPathResource", new ClassPathResource("org/springframework/core/io/ResourceTests.class")), |
| 144 | + argumentSet("ClassPathResource with ClassLoader", new ClassPathResource("org/springframework/core/io/ResourceTests.class", ResourceTests.class.getClassLoader())), |
| 145 | + argumentSet("ClassPathResource with Class", new ClassPathResource("ResourceTests.class", ResourceTests.class)), |
| 146 | + argumentSet("FileSystemResource", new FileSystemResource(resourceClass.getFile())), |
| 147 | + argumentSet("FileSystemResource with File", new FileSystemResource(new File(resourceClass.getFile()))), |
| 148 | + argumentSet("FileSystemResource with File path", new FileSystemResource(resourceClassFilePath)), |
| 149 | + argumentSet("UrlResource", new UrlResource(resourceClass)) |
| 150 | + ); |
| 151 | + } |
| 152 | + } |
147 | 153 |
|
148 | 154 | @Nested |
149 | 155 | class ByteArrayResourceTests { |
|
0 commit comments