/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/spi/ProviderInfoTestCase.java

https://github.com/conceptboard/TwelveMonkeys · Java · 97 lines · 72 code · 18 blank · 7 comment · 0 complexity · 9a2a7cfdb4d9bbabb155b4dd93eb95ac MD5 · raw file

  1. package com.twelvemonkeys.imageio.spi;
  2. import junit.framework.TestCase;
  3. import java.net.URL;
  4. /**
  5. * ProviderInfoTestCase
  6. *
  7. * @author <a href="mailto:harald.kuhr@gmail.com">Harald Kuhr</a>
  8. * @author last modified by $Author: haraldk$
  9. * @version $Id: ProviderInfoTestCase.java,v 1.0 Oct 31, 2009 3:51:22 PM haraldk Exp$
  10. */
  11. public class ProviderInfoTestCase extends TestCase {
  12. public void testCreateNorma() {
  13. new ProviderInfo(Package.getPackage("java.util"));
  14. }
  15. public void testCreateNullPackage() {
  16. try {
  17. new ProviderInfo(null);
  18. fail("IllegalArgumentException expected for null package");
  19. }
  20. catch (IllegalArgumentException expected) {
  21. assertTrue(expected.getMessage().toLowerCase().contains("package"));
  22. }
  23. }
  24. public void testGetVendorUnknownNonJARPackage() {
  25. ProviderInfo info = new ProviderInfo(mockNonJARPackage("org.foo"));
  26. String vendor = info.getVendorName();
  27. assertNotNull(vendor);
  28. assertEquals("org.foo", vendor);
  29. String version = info.getVersion();
  30. assertNotNull(version);
  31. assertEquals("Unspecified", version);
  32. }
  33. public void testGetVendorNonJARTMPackage() {
  34. ProviderInfo info = new ProviderInfo(mockNonJARPackage("com.twelvemonkeys"));
  35. String vendor = info.getVendorName();
  36. assertNotNull(vendor);
  37. assertEquals("TwelveMonkeys", vendor);
  38. String version = info.getVersion();
  39. assertNotNull(version);
  40. assertEquals("DEV", version);
  41. }
  42. public void testGetVendorKnownJARPackage() {
  43. ProviderInfo info = new ProviderInfo(mockJARPackage("com.acme", "1.7u4-BETA-b39", "Acme"));
  44. String vendor = info.getVendorName();
  45. assertNotNull(vendor);
  46. assertEquals("Acme", vendor);
  47. String version = info.getVersion();
  48. assertNotNull(version);
  49. assertEquals("1.7u4-BETA-b39", version);
  50. }
  51. private Package mockNonJARPackage(final String pName) {
  52. return new MockClassLoader().mockPackage(
  53. pName,
  54. null, null, null,
  55. null, null, null,
  56. null
  57. );
  58. }
  59. private Package mockJARPackage(final String pName, final String pImplVersion, final String pImplVendor) {
  60. return new MockClassLoader().mockPackage(
  61. pName,
  62. "The almighty specification", "1.0", "Acme Inc",
  63. "The buggy implementation", pImplVersion, pImplVendor,
  64. null
  65. );
  66. }
  67. private static class MockClassLoader extends ClassLoader {
  68. protected MockClassLoader() {
  69. super(null);
  70. }
  71. public Package mockPackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) throws IllegalArgumentException {
  72. return definePackage(name, specTitle, specVersion, specVendor, implTitle, implVersion, implVendor, sealBase);
  73. }
  74. @Override
  75. protected Package getPackage(String name) {
  76. return null; // Allow re-createing packages
  77. }
  78. }
  79. }