378 } |
390 } |
379 |
391 |
380 @Test(expectedExceptions = IllegalStateException.class) |
392 @Test(expectedExceptions = IllegalStateException.class) |
381 public void testExportsWithDuplicate1() { |
393 public void testExportsWithDuplicate1() { |
382 Exports e = exports("p"); |
394 Exports e = exports("p"); |
383 ModuleDescriptor.module("foo").exports(e).exports(e); |
395 ModuleDescriptor.newModule("foo").exports(e).exports(e); |
384 } |
396 } |
385 |
397 |
386 @Test(expectedExceptions = IllegalStateException.class) |
398 @Test(expectedExceptions = IllegalStateException.class) |
387 public void testExportsWithDuplicate2() { |
399 public void testExportsWithDuplicate2() { |
388 ModuleDescriptor.module("foo").exports("p").exports("p"); |
400 ModuleDescriptor.newModule("foo").exports("p").exports("p"); |
389 } |
|
390 |
|
391 @Test(expectedExceptions = IllegalStateException.class) |
|
392 public void testExportsOnContainedPackage() { |
|
393 ModuleDescriptor.module("foo").contains("p").exports("p"); |
|
394 } |
|
395 |
|
396 @Test(expectedExceptions = IllegalStateException.class) |
|
397 public void testExportsToTargetOnContainedPackage() { |
|
398 ModuleDescriptor.module("foo").contains("p").exports("p", Set.of("bar")); |
|
399 } |
401 } |
400 |
402 |
401 @Test(expectedExceptions = IllegalArgumentException.class ) |
403 @Test(expectedExceptions = IllegalArgumentException.class ) |
402 public void testExportsWithEmptySet() { |
404 public void testExportsWithEmptySet() { |
403 ModuleDescriptor.module("foo").exports("p", Collections.emptySet()); |
405 ModuleDescriptor.newModule("foo").exports("p", Collections.emptySet()); |
404 } |
406 } |
405 |
407 |
406 @Test(dataProvider = "invalidjavaidentifiers", |
408 @Test(dataProvider = "invalidjavaidentifiers", |
407 expectedExceptions = IllegalArgumentException.class ) |
409 expectedExceptions = IllegalArgumentException.class ) |
408 public void testExportsWithBadName(String pn, String ignore) { |
410 public void testExportsWithBadName(String pn, String ignore) { |
409 ModuleDescriptor.module("foo").exports(pn); |
411 ModuleDescriptor.newModule("foo").exports(pn); |
410 } |
412 } |
411 |
413 |
412 @Test(expectedExceptions = NullPointerException.class ) |
414 @Test(expectedExceptions = NullPointerException.class ) |
413 public void testExportsWithNullExports() { |
415 public void testExportsWithNullExports() { |
414 ModuleDescriptor.module("foo").exports((Exports) null); |
416 ModuleDescriptor.newModule("foo").exports((Exports) null); |
415 } |
417 } |
416 |
418 |
417 @Test(expectedExceptions = NullPointerException.class ) |
419 @Test(expectedExceptions = NullPointerException.class ) |
418 public void testExportsWithNullTargets() { |
420 public void testExportsWithNullTargets() { |
419 ModuleDescriptor.module("foo").exports("p", (Set<String>) null); |
421 ModuleDescriptor.newModule("foo").exports("p", (Set<String>) null); |
420 } |
422 } |
421 |
423 |
422 public void testExportsEqualsAndHashCode() { |
424 public void testExportsCompare() { |
423 Exports e1, e2; |
425 Exports e1 = exports("p"); |
424 |
426 Exports e2 = exports("p"); |
425 e1 = exports("p"); |
|
426 e2 = exports("p"); |
|
427 assertEquals(e1, e2); |
427 assertEquals(e1, e2); |
428 assertTrue(e1.hashCode() == e2.hashCode()); |
428 assertTrue(e1.hashCode() == e2.hashCode()); |
429 |
429 assertTrue(e1.compareTo(e2) == 0); |
430 e1 = exports(Set.of(Exports.Modifier.SYNTHETIC), "p"); |
430 assertTrue(e2.compareTo(e1) == 0); |
431 e2 = exports(Set.of(Exports.Modifier.SYNTHETIC), "p"); |
431 } |
|
432 |
|
433 public void testExportsCompareWithSameModifiers() { |
|
434 Exports e1 = exports(Set.of(Exports.Modifier.SYNTHETIC), "p"); |
|
435 Exports e2 = exports(Set.of(Exports.Modifier.SYNTHETIC), "p"); |
432 assertEquals(e1, e2); |
436 assertEquals(e1, e2); |
433 assertTrue(e1.hashCode() == e2.hashCode()); |
437 assertTrue(e1.hashCode() == e2.hashCode()); |
434 |
438 assertTrue(e1.compareTo(e2) == 0); |
435 e1 = exports("p"); |
439 assertTrue(e2.compareTo(e1) == 0); |
436 e2 = exports("q"); |
440 } |
|
441 |
|
442 public void testExportsCompareWithDifferentModifiers() { |
|
443 Exports e1 = exports(Set.of(Exports.Modifier.SYNTHETIC), "p"); |
|
444 Exports e2 = exports("p"); |
437 assertNotEquals(e1, e2); |
445 assertNotEquals(e1, e2); |
438 |
446 assertTrue(e1.compareTo(e2) == 1); |
439 e1 = exports(Set.of(Exports.Modifier.SYNTHETIC), "p"); |
447 assertTrue(e2.compareTo(e1) == -1); |
440 e2 = exports(Set.of(), "p"); |
448 } |
|
449 |
|
450 public void testExportsCompareWithSameTargets() { |
|
451 Exports e1 = exports("p", "x"); |
|
452 Exports e2 = exports("p", "x"); |
|
453 assertEquals(e1, e2); |
|
454 assertTrue(e1.hashCode() == e2.hashCode()); |
|
455 assertTrue(e1.compareTo(e2) == 0); |
|
456 assertTrue(e2.compareTo(e1) == 0); |
|
457 } |
|
458 |
|
459 public void testExportsCompareWithDifferentTargets() { |
|
460 Exports e1 = exports("p", "y"); |
|
461 Exports e2 = exports("p", "x"); |
441 assertNotEquals(e1, e2); |
462 assertNotEquals(e1, e2); |
|
463 assertTrue(e1.compareTo(e2) == 1); |
|
464 assertTrue(e2.compareTo(e1) == -1); |
442 } |
465 } |
443 |
466 |
444 public void testExportsToString() { |
467 public void testExportsToString() { |
445 String s = ModuleDescriptor.module("foo") |
468 String s = ModuleDescriptor.newModule("foo") |
446 .exports("p1", Set.of("bar")) |
469 .exports("p1", Set.of("bar")) |
447 .build() |
470 .build() |
448 .exports() |
471 .exports() |
449 .iterator() |
472 .iterator() |
450 .next() |
473 .next() |
526 assertTrue(o.targets().size() == 2); |
549 assertTrue(o.targets().size() == 2); |
527 assertTrue(o.targets().contains("bar")); |
550 assertTrue(o.targets().contains("bar")); |
528 assertTrue(o.targets().contains("gus")); |
551 assertTrue(o.targets().contains("gus")); |
529 } |
552 } |
530 |
553 |
531 /* |
|
532 |
|
533 public void testOpensToAllWithModifier() { |
|
534 Exports e = exports(Set.of(Exports.Modifier.SYNTHETIC), "p"); |
|
535 assertEquals(e, e); |
|
536 assertTrue(e.modifiers().size() == 1); |
|
537 assertTrue(e.modifiers().contains(Exports.Modifier.SYNTHETIC)); |
|
538 assertEquals(e.source(), "p"); |
|
539 assertFalse(e.isQualified()); |
|
540 assertTrue(e.targets().isEmpty()); |
|
541 } |
|
542 |
|
543 public void testOpensToTargetWithModifier() { |
|
544 Exports e = exports(Set.of(Exports.Modifier.SYNTHETIC), "p", Set.of("bar")); |
|
545 assertEquals(e, e); |
|
546 assertTrue(e.modifiers().size() == 1); |
|
547 assertTrue(e.modifiers().contains(Exports.Modifier.SYNTHETIC)); |
|
548 assertEquals(e.source(), "p"); |
|
549 assertTrue(e.isQualified()); |
|
550 assertTrue(e.targets().size() == 1); |
|
551 assertTrue(e.targets().contains("bar")); |
|
552 } |
|
553 |
|
554 |
|
555 */ |
|
556 |
|
557 @Test(expectedExceptions = IllegalStateException.class) |
554 @Test(expectedExceptions = IllegalStateException.class) |
558 public void testOpensWithDuplicate1() { |
555 public void testOpensWithDuplicate1() { |
559 Opens o = opens("p"); |
556 Opens o = opens("p"); |
560 ModuleDescriptor.module("foo").opens(o).opens(o); |
557 ModuleDescriptor.newModule("foo").opens(o).opens(o); |
561 } |
558 } |
562 |
559 |
563 @Test(expectedExceptions = IllegalStateException.class) |
560 @Test(expectedExceptions = IllegalStateException.class) |
564 public void testOpensWithDuplicate2() { |
561 public void testOpensWithDuplicate2() { |
565 ModuleDescriptor.module("foo").opens("p").opens("p"); |
562 ModuleDescriptor.newModule("foo").opens("p").opens("p"); |
566 } |
|
567 |
|
568 @Test(expectedExceptions = IllegalStateException.class) |
|
569 public void testOpensOnContainedPackage() { |
|
570 ModuleDescriptor.module("foo").contains("p").opens("p"); |
|
571 } |
|
572 |
|
573 @Test(expectedExceptions = IllegalStateException.class) |
|
574 public void testOpensToTargetOnContainedPackage() { |
|
575 ModuleDescriptor.module("foo").contains("p").opens("p", Set.of("bar")); |
|
576 } |
563 } |
577 |
564 |
578 @Test(expectedExceptions = IllegalArgumentException.class ) |
565 @Test(expectedExceptions = IllegalArgumentException.class ) |
579 public void testOpensWithEmptySet() { |
566 public void testOpensWithEmptySet() { |
580 ModuleDescriptor.module("foo").opens("p", Collections.emptySet()); |
567 ModuleDescriptor.newModule("foo").opens("p", Collections.emptySet()); |
581 } |
568 } |
582 |
569 |
583 @Test(dataProvider = "invalidjavaidentifiers", |
570 @Test(dataProvider = "invalidjavaidentifiers", |
584 expectedExceptions = IllegalArgumentException.class ) |
571 expectedExceptions = IllegalArgumentException.class ) |
585 public void testOpensWithBadName(String pn, String ignore) { |
572 public void testOpensWithBadName(String pn, String ignore) { |
586 ModuleDescriptor.module("foo").opens(pn); |
573 ModuleDescriptor.newModule("foo").opens(pn); |
587 } |
574 } |
588 |
575 |
589 @Test(expectedExceptions = NullPointerException.class ) |
576 @Test(expectedExceptions = NullPointerException.class ) |
590 public void testOpensWithNullExports() { |
577 public void testOpensWithNullExports() { |
591 ModuleDescriptor.module("foo").opens((Opens) null); |
578 ModuleDescriptor.newModule("foo").opens((Opens) null); |
592 } |
579 } |
593 |
580 |
594 @Test(expectedExceptions = NullPointerException.class ) |
581 @Test(expectedExceptions = NullPointerException.class ) |
595 public void testOpensWithNullTargets() { |
582 public void testOpensWithNullTargets() { |
596 ModuleDescriptor.module("foo").opens("p", (Set<String>) null); |
583 ModuleDescriptor.newModule("foo").opens("p", (Set<String>) null); |
597 } |
584 } |
598 |
585 |
599 public void testOpensEqualsAndHashCode() { |
586 public void testOpensCompare() { |
600 Opens o1, o2; |
587 Opens o1 = opens("p"); |
601 |
588 Opens o2 = opens("p"); |
602 o1 = opens("p"); |
|
603 o2 = opens("p"); |
|
604 assertEquals(o1, o2); |
|
605 assertTrue(o1.hashCode() == o1.hashCode()); |
|
606 |
|
607 o1 = opens(Set.of(Opens.Modifier.SYNTHETIC), "p"); |
|
608 o2 = opens(Set.of(Opens.Modifier.SYNTHETIC), "p"); |
|
609 assertEquals(o1, o2); |
589 assertEquals(o1, o2); |
610 assertTrue(o1.hashCode() == o2.hashCode()); |
590 assertTrue(o1.hashCode() == o2.hashCode()); |
611 |
591 assertTrue(o1.compareTo(o2) == 0); |
612 o1 = opens("p"); |
592 assertTrue(o2.compareTo(o1) == 0); |
613 o2 = opens("q"); |
593 } |
|
594 |
|
595 public void testOpensCompareWithSameModifiers() { |
|
596 Opens o1 = opens(Set.of(Opens.Modifier.SYNTHETIC), "p"); |
|
597 Opens o2 = opens(Set.of(Opens.Modifier.SYNTHETIC), "p"); |
|
598 assertEquals(o1, o2); |
|
599 assertTrue(o1.hashCode() == o2.hashCode()); |
|
600 assertTrue(o1.compareTo(o2) == 0); |
|
601 assertTrue(o2.compareTo(o1) == 0); |
|
602 } |
|
603 |
|
604 public void testOpensCompareWithDifferentModifiers() { |
|
605 Opens o1 = opens(Set.of(Opens.Modifier.SYNTHETIC), "p"); |
|
606 Opens o2 = opens("p"); |
614 assertNotEquals(o1, o2); |
607 assertNotEquals(o1, o2); |
615 |
608 assertTrue(o1.compareTo(o2) == 1); |
616 o1 = opens(Set.of(Opens.Modifier.SYNTHETIC), "p"); |
609 assertTrue(o2.compareTo(o1) == -1); |
617 o2 = opens(Set.of(), "p"); |
610 } |
|
611 |
|
612 public void testOpensCompareWithSameTargets() { |
|
613 Opens o1 = opens("p", "x"); |
|
614 Opens o2 = opens("p", "x"); |
|
615 assertEquals(o1, o2); |
|
616 assertTrue(o1.hashCode() == o2.hashCode()); |
|
617 assertTrue(o1.compareTo(o2) == 0); |
|
618 assertTrue(o2.compareTo(o1) == 0); |
|
619 } |
|
620 |
|
621 public void testOpensCompareWithDifferentTargets() { |
|
622 Opens o1 = opens("p", "y"); |
|
623 Opens o2 = opens("p", "x"); |
618 assertNotEquals(o1, o2); |
624 assertNotEquals(o1, o2); |
|
625 assertTrue(o1.compareTo(o2) == 1); |
|
626 assertTrue(o2.compareTo(o1) == -1); |
619 } |
627 } |
620 |
628 |
621 public void testOpensToString() { |
629 public void testOpensToString() { |
622 String s = ModuleDescriptor.module("foo") |
630 String s = ModuleDescriptor.newModule("foo") |
623 .opens("p1", Set.of("bar")) |
631 .opens("p1", Set.of("bar")) |
624 .build() |
632 .build() |
625 .opens() |
633 .opens() |
626 .iterator() |
634 .iterator() |
627 .next() |
635 .next() |
694 } |
716 } |
695 |
717 |
696 @Test(expectedExceptions = IllegalStateException.class ) |
718 @Test(expectedExceptions = IllegalStateException.class ) |
697 public void testProvidesWithDuplicateProvides() { |
719 public void testProvidesWithDuplicateProvides() { |
698 Provides p = provides("p.S", "q.S2"); |
720 Provides p = provides("p.S", "q.S2"); |
699 ModuleDescriptor.module("m").provides("p.S", "q.S1").provides(p); |
721 ModuleDescriptor.newModule("m").provides("p.S", List.of("q.S1")).provides(p); |
700 } |
722 } |
701 |
723 |
702 @Test(expectedExceptions = IllegalArgumentException.class ) |
724 @Test(expectedExceptions = IllegalArgumentException.class ) |
703 public void testProvidesWithEmptySet() { |
725 public void testProvidesWithEmptySet() { |
704 ModuleDescriptor.module("foo").provides("p.Service", Collections.emptyList()); |
726 ModuleDescriptor.newModule("foo").provides("p.Service", Collections.emptyList()); |
|
727 } |
|
728 |
|
729 @Test(expectedExceptions = IllegalArgumentException.class ) |
|
730 public void testProvidesWithSimpleIdentifier1() { |
|
731 ModuleDescriptor.newModule("foo").provides("S", List.of("q.P")); |
|
732 } |
|
733 |
|
734 @Test(expectedExceptions = IllegalArgumentException.class ) |
|
735 public void testProvidesWithSimpleIdentifier2() { |
|
736 ModuleDescriptor.newModule("foo").provides("p.S", List.of("P")); |
705 } |
737 } |
706 |
738 |
707 @Test(dataProvider = "invalidjavaidentifiers", |
739 @Test(dataProvider = "invalidjavaidentifiers", |
708 expectedExceptions = IllegalArgumentException.class ) |
740 expectedExceptions = IllegalArgumentException.class ) |
709 public void testProvidesWithBadService(String service, String ignore) { |
741 public void testProvidesWithBadService(String service, String ignore) { |
710 ModuleDescriptor.module("foo").provides(service, "p.Provider"); |
742 ModuleDescriptor.newModule("foo").provides(service, List.of("p.Provider")); |
711 } |
743 } |
712 |
744 |
713 @Test(dataProvider = "invalidjavaidentifiers", |
745 @Test(dataProvider = "invalidjavaidentifiers", |
714 expectedExceptions = IllegalArgumentException.class ) |
746 expectedExceptions = IllegalArgumentException.class ) |
715 public void testProvidesWithBadProvider(String provider, String ignore) { |
747 public void testProvidesWithBadProvider(String provider, String ignore) { |
716 ModuleDescriptor.module("foo").provides("p.Service", provider); |
748 List<String> names = new ArrayList<>(); // allows nulls |
|
749 names.add(provider); |
|
750 ModuleDescriptor.newModule("foo").provides("p.Service", names); |
717 } |
751 } |
718 |
752 |
719 @Test(expectedExceptions = NullPointerException.class ) |
753 @Test(expectedExceptions = NullPointerException.class ) |
720 public void testProvidesWithNullProvides() { |
754 public void testProvidesWithNullProvides() { |
721 ModuleDescriptor.module("foo").provides((Provides) null); |
755 ModuleDescriptor.newModule("foo").provides((Provides) null); |
722 } |
756 } |
723 |
757 |
724 @Test(expectedExceptions = NullPointerException.class ) |
758 @Test(expectedExceptions = NullPointerException.class ) |
725 public void testProvidesWithNullProviders() { |
759 public void testProvidesWithNullProviders() { |
726 ModuleDescriptor.module("foo").provides("p.S", (List<String>) null); |
760 ModuleDescriptor.newModule("foo").provides("p.S", (List<String>) null); |
727 } |
761 } |
728 |
762 |
729 public void testProvidesEqualsAndHashCode() { |
763 public void testProvidesCompare() { |
730 Provides p1, p2; |
764 Provides p1 = provides("p.S", "q.S1"); |
731 |
765 Provides p2 = provides("p.S", "q.S1"); |
732 p1 = provides("p.S", "q.S1"); |
|
733 p2 = provides("p.S", "q.S1"); |
|
734 assertEquals(p1, p2); |
766 assertEquals(p1, p2); |
735 assertTrue(p1.hashCode() == p2.hashCode()); |
767 assertTrue(p1.hashCode() == p2.hashCode()); |
736 |
768 assertTrue(p1.compareTo(p2) == 0); |
737 p1 = provides("p.S", "q.S1"); |
769 assertTrue(p2.compareTo(p1) == 0); |
738 p2 = provides("p.S", "q.S2"); |
770 } |
|
771 |
|
772 public void testProvidesCompareWithDifferentService() { |
|
773 Provides p1 = provides("p.S2", "q.S1"); |
|
774 Provides p2 = provides("p.S1", "q.S1"); |
739 assertNotEquals(p1, p2); |
775 assertNotEquals(p1, p2); |
740 |
776 assertTrue(p1.compareTo(p2) == 1); |
741 p1 = provides("p.S", "q.S1"); |
777 assertTrue(p2.compareTo(p1) == -1); |
742 p2 = provides("p.S2", "q.S1"); |
778 } |
|
779 |
|
780 public void testProvidesCompareWithDifferentProviders1() { |
|
781 Provides p1 = provides("p.S", "q.S2"); |
|
782 Provides p2 = provides("p.S", "q.S1"); |
743 assertNotEquals(p1, p2); |
783 assertNotEquals(p1, p2); |
744 } |
784 assertTrue(p1.compareTo(p2) == 1); |
745 |
785 assertTrue(p2.compareTo(p1) == -1); |
746 // contains |
786 } |
747 |
787 |
748 public void testContains() { |
788 public void testProvidesCompareWithDifferentProviders2() { |
749 Set<String> packages = ModuleDescriptor.module("foo") |
789 Provides p1 = provides("p.S", List.of("q.S1", "q.S2")); |
750 .contains("p") |
790 Provides p2 = provides("p.S", "q.S1"); |
751 .contains("q") |
791 assertNotEquals(p1, p2); |
|
792 assertTrue(p1.compareTo(p2) == 1); |
|
793 assertTrue(p2.compareTo(p1) == -1); |
|
794 } |
|
795 |
|
796 // packages |
|
797 |
|
798 public void testPackages1() { |
|
799 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
800 .packages(Set.of("p", "q")) |
752 .build() |
801 .build() |
753 .packages(); |
802 .packages(); |
754 assertTrue(packages.size() == 2); |
803 assertTrue(packages.size() == 2); |
755 assertTrue(packages.contains("p")); |
804 assertTrue(packages.contains("p")); |
756 assertTrue(packages.contains("q")); |
805 assertTrue(packages.contains("q")); |
757 } |
806 } |
758 |
807 |
759 public void testContainsWithEmptySet() { |
808 public void testPackages2() { |
760 Set<String> packages = ModuleDescriptor.module("foo") |
809 Set<String> packages = ModuleDescriptor.newModule("foo") |
761 .contains(Collections.emptySet()) |
810 .packages(Set.of("p")) |
762 .build() |
811 .packages(Set.of("q")) |
763 .packages(); |
|
764 assertTrue(packages.size() == 0); |
|
765 } |
|
766 |
|
767 @Test(expectedExceptions = IllegalStateException.class) |
|
768 public void testContainsWithDuplicate() { |
|
769 ModuleDescriptor.module("foo").contains("p").contains("p"); |
|
770 } |
|
771 |
|
772 @Test(expectedExceptions = IllegalStateException.class) |
|
773 public void testContainsWithExportedPackage() { |
|
774 ModuleDescriptor.module("foo").exports("p").contains("p"); |
|
775 } |
|
776 |
|
777 @Test(dataProvider = "invalidjavaidentifiers", |
|
778 expectedExceptions = IllegalArgumentException.class ) |
|
779 public void testContainsWithBadName(String pn, String ignore) { |
|
780 ModuleDescriptor.module("foo").contains(pn); |
|
781 } |
|
782 |
|
783 |
|
784 // packages |
|
785 |
|
786 public void testPackages() { |
|
787 Set<String> packages = ModuleDescriptor.module("foo") |
|
788 .exports("p") |
|
789 .contains("q") |
|
790 .build() |
812 .build() |
791 .packages(); |
813 .packages(); |
792 assertTrue(packages.size() == 2); |
814 assertTrue(packages.size() == 2); |
793 assertTrue(packages.contains("p")); |
815 assertTrue(packages.contains("p")); |
794 assertTrue(packages.contains("q")); |
816 assertTrue(packages.contains("q")); |
795 } |
817 } |
796 |
818 |
797 |
819 |
|
820 public void testPackagesWithEmptySet() { |
|
821 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
822 .packages(Collections.emptySet()) |
|
823 .build() |
|
824 .packages(); |
|
825 assertTrue(packages.size() == 0); |
|
826 } |
|
827 |
|
828 public void testPackagesDuplicate() { |
|
829 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
830 .packages(Set.of("p")) |
|
831 .packages(Set.of("p")) |
|
832 .build() |
|
833 .packages(); |
|
834 assertTrue(packages.size() == 1); |
|
835 assertTrue(packages.contains("p")); |
|
836 } |
|
837 |
|
838 public void testPackagesAndExportsPackage1() { |
|
839 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
840 .packages(Set.of("p")) |
|
841 .exports("p") |
|
842 .build() |
|
843 .packages(); |
|
844 assertTrue(packages.size() == 1); |
|
845 assertTrue(packages.contains("p")); |
|
846 } |
|
847 |
|
848 public void testPackagesAndExportsPackage2() { |
|
849 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
850 .exports("p") |
|
851 .packages(Set.of("p")) |
|
852 .build() |
|
853 .packages(); |
|
854 assertTrue(packages.size() == 1); |
|
855 assertTrue(packages.contains("p")); |
|
856 } |
|
857 |
|
858 public void testPackagesAndOpensPackage1() { |
|
859 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
860 .packages(Set.of("p")) |
|
861 .opens("p") |
|
862 .build() |
|
863 .packages(); |
|
864 assertTrue(packages.size() == 1); |
|
865 assertTrue(packages.contains("p")); |
|
866 } |
|
867 |
|
868 public void testPackagesAndOpensPackage2() { |
|
869 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
870 .opens("p") |
|
871 .packages(Set.of("p")) |
|
872 .build() |
|
873 .packages(); |
|
874 assertTrue(packages.size() == 1); |
|
875 assertTrue(packages.contains("p")); |
|
876 } |
|
877 |
|
878 public void testPackagesAndProvides1() { |
|
879 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
880 .packages(Set.of("p")) |
|
881 .provides("q.S", List.of("p.T")) |
|
882 .build() |
|
883 .packages(); |
|
884 assertTrue(packages.size() == 1); |
|
885 assertTrue(packages.contains("p")); |
|
886 } |
|
887 |
|
888 public void testPackagesAndProvides2() { |
|
889 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
890 .provides("q.S", List.of("p.T")) |
|
891 .packages(Set.of("p")) |
|
892 .build() |
|
893 .packages(); |
|
894 assertTrue(packages.size() == 1); |
|
895 assertTrue(packages.contains("p")); |
|
896 } |
|
897 |
|
898 public void testPackagesAndMainClass1() { |
|
899 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
900 .packages(Set.of("p")) |
|
901 .mainClass("p.Main") |
|
902 .build() |
|
903 .packages(); |
|
904 assertTrue(packages.size() == 1); |
|
905 assertTrue(packages.contains("p")); |
|
906 } |
|
907 |
|
908 public void testPackagesAndMainClass2() { |
|
909 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
910 .mainClass("p.Main") |
|
911 .packages(Set.of("p")) |
|
912 .build() |
|
913 .packages(); |
|
914 assertTrue(packages.size() == 1); |
|
915 assertTrue(packages.contains("p")); |
|
916 } |
|
917 |
|
918 public void testPackagesAndAll() { |
|
919 Set<String> packages = ModuleDescriptor.newModule("foo") |
|
920 .exports("p1") |
|
921 .opens("p2") |
|
922 .packages(Set.of("p3")) |
|
923 .provides("q.S", List.of("p4.T")) |
|
924 .mainClass("p5.Main") |
|
925 .build() |
|
926 .packages(); |
|
927 assertTrue(Objects.equals(packages, Set.of("p1", "p2", "p3", "p4", "p5"))); |
|
928 } |
|
929 |
|
930 @Test(dataProvider = "invalidjavaidentifiers", |
|
931 expectedExceptions = IllegalArgumentException.class ) |
|
932 public void testPackagesWithBadName(String pn, String ignore) { |
|
933 Set<String> pkgs = new HashSet<>(); // allows nulls |
|
934 pkgs.add(pn); |
|
935 ModuleDescriptor.newModule("foo").packages(pkgs); |
|
936 } |
|
937 |
798 // name |
938 // name |
799 |
939 |
800 public void testModuleName() { |
940 public void testModuleName() { |
801 String mn = ModuleDescriptor.module("foo").build().name(); |
941 String mn = ModuleDescriptor.newModule("foo").build().name(); |
802 assertEquals(mn, "foo"); |
942 assertEquals(mn, "foo"); |
803 } |
943 } |
804 |
944 |
805 @Test(dataProvider = "invalidjavaidentifiers", |
945 @Test(dataProvider = "invalidjavaidentifiers", |
806 expectedExceptions = IllegalArgumentException.class ) |
946 expectedExceptions = IllegalArgumentException.class ) |
807 public void testBadModuleName(String mn, String ignore) { |
947 public void testBadModuleName(String mn, String ignore) { |
808 ModuleDescriptor.module(mn); |
948 ModuleDescriptor.newModule(mn); |
809 } |
949 } |
810 |
950 |
811 |
951 |
812 // version |
952 // version |
813 |
953 |
814 public void testVersion1() { |
954 public void testVersion1() { |
815 Version v1 = Version.parse("1.0"); |
955 Version v1 = Version.parse("1.0"); |
816 Version v2 = ModuleDescriptor.module("foo") |
956 Version v2 = ModuleDescriptor.newModule("foo") |
817 .version(v1) |
957 .version(v1) |
818 .build() |
958 .build() |
819 .version() |
959 .version() |
820 .get(); |
960 .get(); |
821 assertEquals(v1, v2); |
961 assertEquals(v1, v2); |
822 } |
962 } |
823 |
963 |
824 public void testVersion2() { |
964 public void testVersion2() { |
825 String vs = "1.0"; |
965 String vs = "1.0"; |
826 Version v1 = ModuleDescriptor.module("foo") |
966 Version v1 = ModuleDescriptor.newModule("foo") |
827 .version(vs) |
967 .version(vs) |
828 .build() |
968 .build() |
829 .version() |
969 .version() |
830 .get(); |
970 .get(); |
831 Version v2 = Version.parse(vs); |
971 Version v2 = Version.parse(vs); |
832 assertEquals(v1, v2); |
972 assertEquals(v1, v2); |
833 } |
973 } |
834 |
974 |
835 @Test(expectedExceptions = NullPointerException.class ) |
975 @Test(expectedExceptions = NullPointerException.class ) |
836 public void testNullVersion1() { |
976 public void testNullVersion1() { |
837 ModuleDescriptor.module("foo").version((Version) null); |
977 ModuleDescriptor.newModule("foo").version((Version) null); |
838 } |
978 } |
839 |
979 |
840 @Test(expectedExceptions = IllegalArgumentException.class ) |
980 @Test(expectedExceptions = IllegalArgumentException.class ) |
841 public void testNullVersion2() { |
981 public void testNullVersion2() { |
842 ModuleDescriptor.module("foo").version((String) null); |
982 ModuleDescriptor.newModule("foo").version((String) null); |
843 } |
983 } |
844 |
984 |
845 @Test(expectedExceptions = IllegalArgumentException.class ) |
985 @Test(expectedExceptions = IllegalArgumentException.class ) |
846 public void testEmptyVersion() { |
986 public void testEmptyVersion() { |
847 ModuleDescriptor.module("foo").version(""); |
987 ModuleDescriptor.newModule("foo").version(""); |
848 } |
988 } |
849 |
989 |
850 |
990 |
851 // toNameAndVersion |
991 // toNameAndVersion |
852 |
992 |
853 public void testToNameAndVersion() { |
993 public void testToNameAndVersion() { |
854 ModuleDescriptor md1 = ModuleDescriptor.module("foo").build(); |
994 ModuleDescriptor md1 = ModuleDescriptor.newModule("foo").build(); |
855 assertEquals(md1.toNameAndVersion(), "foo"); |
995 assertEquals(md1.toNameAndVersion(), "foo"); |
856 |
996 |
857 ModuleDescriptor md2 = ModuleDescriptor.module("foo").version("1.0").build(); |
997 ModuleDescriptor md2 = ModuleDescriptor.newModule("foo").version("1.0").build(); |
858 assertEquals(md2.toNameAndVersion(), "foo@1.0"); |
998 assertEquals(md2.toNameAndVersion(), "foo@1.0"); |
859 } |
999 } |
860 |
1000 |
861 |
1001 |
862 // open modules |
1002 // open modules |
863 |
1003 |
864 public void testOpenModules() { |
1004 public void testOpenModule() { |
865 ModuleDescriptor descriptor = ModuleDescriptor.openModule("m") |
1005 ModuleDescriptor descriptor = ModuleDescriptor.newOpenModule("foo") |
866 .requires("java.base") |
1006 .requires("bar") |
867 .contains("p") |
1007 .exports("p") |
|
1008 .provides("p.Service", List.of("q.ServiceImpl")) |
868 .build(); |
1009 .build(); |
|
1010 |
|
1011 // modifiers |
|
1012 assertTrue(descriptor.modifiers().contains(ModuleDescriptor.Modifier.OPEN)); |
869 assertTrue(descriptor.isOpen()); |
1013 assertTrue(descriptor.isOpen()); |
870 assertTrue(descriptor.packages().size() == 1); |
1014 |
871 assertTrue(descriptor.packages().contains("p")); |
1015 // requires |
|
1016 assertTrue(descriptor.requires().size() == 2); |
|
1017 Set<String> names = descriptor.requires() |
|
1018 .stream() |
|
1019 .map(Requires::name) |
|
1020 .collect(Collectors.toSet()); |
|
1021 assertEquals(names, Set.of("bar", "java.base")); |
|
1022 |
|
1023 // packages |
|
1024 assertEquals(descriptor.packages(), Set.of("p", "q")); |
|
1025 |
|
1026 // exports |
|
1027 assertTrue(descriptor.exports().size() == 1); |
|
1028 names = descriptor.exports() |
|
1029 .stream() |
|
1030 .map(Exports::source) |
|
1031 .collect(Collectors.toSet()); |
|
1032 assertEquals(names, Set.of("p")); |
|
1033 |
|
1034 // opens |
|
1035 assertTrue(descriptor.opens().isEmpty()); |
|
1036 } |
|
1037 |
|
1038 @Test(expectedExceptions = IllegalStateException.class) |
|
1039 public void testOpensOnOpenModule1() { |
|
1040 ModuleDescriptor.newOpenModule("foo").opens("p"); |
|
1041 } |
|
1042 |
|
1043 @Test(expectedExceptions = IllegalStateException.class) |
|
1044 public void testOpensOnOpenModule2() { |
|
1045 ModuleDescriptor.newOpenModule("foo").opens("p", Set.of("bar")); |
|
1046 } |
|
1047 |
|
1048 public void testIsOpen() { |
|
1049 assertFalse(ModuleDescriptor.newModule("m").build().isOpen()); |
|
1050 assertFalse(ModuleDescriptor.newAutomaticModule("m").build().isOpen()); |
|
1051 assertTrue(ModuleDescriptor.newOpenModule("m").build().isOpen()); |
|
1052 } |
|
1053 |
|
1054 |
|
1055 // automatic modules |
|
1056 |
|
1057 public void testAutomaticModule() { |
|
1058 ModuleDescriptor descriptor = ModuleDescriptor.newAutomaticModule("foo") |
|
1059 .packages(Set.of("p")) |
|
1060 .provides("p.Service", List.of("q.ServiceImpl")) |
|
1061 .build(); |
|
1062 |
|
1063 // modifiers |
|
1064 assertTrue(descriptor.modifiers().contains(ModuleDescriptor.Modifier.AUTOMATIC)); |
|
1065 assertTrue(descriptor.isAutomatic()); |
|
1066 |
|
1067 // requires |
|
1068 assertTrue(descriptor.requires().size() == 1); |
|
1069 Set<String> names = descriptor.requires() |
|
1070 .stream() |
|
1071 .map(Requires::name) |
|
1072 .collect(Collectors.toSet()); |
|
1073 assertEquals(names, Set.of("java.base")); |
|
1074 |
|
1075 // packages |
|
1076 assertEquals(descriptor.packages(), Set.of("p", "q")); |
872 assertTrue(descriptor.exports().isEmpty()); |
1077 assertTrue(descriptor.exports().isEmpty()); |
|
1078 assertTrue(descriptor.opens().isEmpty()); |
873 } |
1079 } |
874 |
1080 |
875 @Test(expectedExceptions = IllegalStateException.class) |
1081 @Test(expectedExceptions = IllegalStateException.class) |
876 public void testOpensOnWeakModule1() { |
1082 public void testRequiresOnAutomaticModule() { |
877 ModuleDescriptor.openModule("foo").opens("p"); |
1083 ModuleDescriptor.newAutomaticModule("foo").requires("java.base"); |
878 } |
1084 } |
879 |
1085 |
880 @Test(expectedExceptions = IllegalStateException.class) |
1086 @Test(expectedExceptions = IllegalStateException.class) |
881 public void testOpensOnWeakModule2() { |
1087 public void testExportsOnAutomaticModule1() { |
882 ModuleDescriptor.openModule("foo").opens("p", Set.of("bar")); |
1088 ModuleDescriptor.newAutomaticModule("foo").exports("p"); |
883 } |
1089 } |
884 |
1090 |
885 public void testIsOpen() { |
1091 @Test(expectedExceptions = IllegalStateException.class) |
886 assertFalse(ModuleDescriptor.module("m").build().isOpen()); |
1092 public void testExportsOnAutomaticModule2() { |
887 assertFalse(ModuleDescriptor.automaticModule("m").build().isOpen()); |
1093 ModuleDescriptor.newAutomaticModule("foo").exports("p", Set.of("bar")); |
888 assertTrue(ModuleDescriptor.openModule("m").build().isOpen()); |
1094 } |
889 } |
1095 |
890 |
1096 @Test(expectedExceptions = IllegalStateException.class) |
891 |
1097 public void testOpensOnAutomaticModule1() { |
892 // automatic modules |
1098 ModuleDescriptor.newAutomaticModule("foo").opens("p"); |
|
1099 } |
|
1100 |
|
1101 @Test(expectedExceptions = IllegalStateException.class) |
|
1102 public void testOpensOnAutomaticModule2() { |
|
1103 ModuleDescriptor.newAutomaticModule("foo").opens("p", Set.of("bar")); |
|
1104 } |
|
1105 |
|
1106 @Test(expectedExceptions = IllegalStateException.class) |
|
1107 public void testUsesOnAutomaticModule() { |
|
1108 ModuleDescriptor.newAutomaticModule("foo").uses("p.Service"); |
|
1109 } |
893 |
1110 |
894 public void testIsAutomatic() { |
1111 public void testIsAutomatic() { |
895 ModuleDescriptor descriptor1 = ModuleDescriptor.module("foo").build(); |
1112 ModuleDescriptor descriptor1 = ModuleDescriptor.newModule("foo").build(); |
896 assertFalse(descriptor1.isAutomatic()); |
1113 assertFalse(descriptor1.isAutomatic()); |
897 |
1114 |
898 ModuleDescriptor descriptor2 = ModuleDescriptor.openModule("foo").build(); |
1115 ModuleDescriptor descriptor2 = ModuleDescriptor.newOpenModule("foo").build(); |
899 assertFalse(descriptor2.isAutomatic()); |
1116 assertFalse(descriptor2.isAutomatic()); |
900 |
1117 |
901 ModuleDescriptor descriptor3 = ModuleDescriptor.automaticModule("foo").build(); |
1118 ModuleDescriptor descriptor3 = ModuleDescriptor.newAutomaticModule("foo").build(); |
902 assertTrue(descriptor3.isAutomatic()); |
1119 assertTrue(descriptor3.isAutomatic()); |
903 } |
1120 } |
904 |
1121 |
905 // isSynthetic |
1122 |
906 public void testIsSynthetic() { |
1123 // newModule with modifiers |
907 assertFalse(Object.class.getModule().getDescriptor().isSynthetic()); |
1124 |
908 |
1125 public void testNewModuleToBuildAutomaticModule() { |
909 ModuleDescriptor descriptor1 = ModuleDescriptor.module("foo").build(); |
1126 Set<ModuleDescriptor.Modifier> ms = Set.of(ModuleDescriptor.Modifier.AUTOMATIC); |
910 assertFalse(descriptor1.isSynthetic()); |
1127 ModuleDescriptor descriptor = ModuleDescriptor.newModule("foo", ms).build(); |
911 |
1128 assertTrue(descriptor.modifiers().equals(ms)); |
912 ModuleDescriptor descriptor2 = ModuleDescriptor.openModule("foo").build(); |
1129 assertTrue(descriptor.isAutomatic()); |
913 assertFalse(descriptor2.isSynthetic()); |
1130 } |
914 |
1131 |
915 ModuleDescriptor descriptor3 = ModuleDescriptor.automaticModule("foo").build(); |
1132 public void testNewModuleToBuildOpenModule() { |
916 assertFalse(descriptor3.isSynthetic()); |
1133 Set<ModuleDescriptor.Modifier> ms = Set.of(ModuleDescriptor.Modifier.OPEN); |
|
1134 ModuleDescriptor descriptor = ModuleDescriptor.newModule("foo", ms).build(); |
|
1135 assertTrue(descriptor.modifiers().equals(ms)); |
|
1136 assertTrue(descriptor.isOpen()); |
|
1137 |
|
1138 ms = Set.of(ModuleDescriptor.Modifier.OPEN, ModuleDescriptor.Modifier.SYNTHETIC); |
|
1139 descriptor = ModuleDescriptor.newModule("foo", ms).build(); |
|
1140 assertTrue(descriptor.modifiers().equals(ms)); |
|
1141 assertTrue(descriptor.isOpen()); |
|
1142 } |
|
1143 |
|
1144 @Test(expectedExceptions = IllegalArgumentException.class) |
|
1145 public void testNewModuleToBuildAutomaticAndOpenModule() { |
|
1146 Set<ModuleDescriptor.Modifier> ms = Set.of(ModuleDescriptor.Modifier.AUTOMATIC, |
|
1147 ModuleDescriptor.Modifier.OPEN); |
|
1148 ModuleDescriptor.newModule("foo", ms); |
917 } |
1149 } |
918 |
1150 |
919 |
1151 |
920 // mainClass |
1152 // mainClass |
921 |
1153 |
922 public void testMainClass() { |
1154 public void testMainClass() { |
923 String mainClass |
1155 String mainClass |
924 = ModuleDescriptor.module("foo").mainClass("p.Main").build().mainClass().get(); |
1156 = ModuleDescriptor.newModule("foo").mainClass("p.Main").build().mainClass().get(); |
925 assertEquals(mainClass, "p.Main"); |
1157 assertEquals(mainClass, "p.Main"); |
|
1158 } |
|
1159 |
|
1160 @Test(expectedExceptions = IllegalArgumentException.class) |
|
1161 public void testMainClassWithSimpleIdentifier() { |
|
1162 ModuleDescriptor.newModule("foo").mainClass("Main"); |
926 } |
1163 } |
927 |
1164 |
928 @Test(dataProvider = "invalidjavaidentifiers", |
1165 @Test(dataProvider = "invalidjavaidentifiers", |
929 expectedExceptions = IllegalArgumentException.class ) |
1166 expectedExceptions = IllegalArgumentException.class ) |
930 public void testMainClassWithBadName(String mainClass, String ignore) { |
1167 public void testMainClassWithBadName(String mainClass, String ignore) { |
931 Builder builder = ModuleDescriptor.module("foo"); |
1168 Builder builder = ModuleDescriptor.newModule("foo"); |
932 builder.mainClass(mainClass); |
1169 builder.mainClass(mainClass); |
933 } |
1170 } |
934 |
1171 |
935 |
1172 |
936 // osName |
1173 // osName |
937 |
1174 |
938 public void testOsName() { |
1175 public void testOsName() { |
939 String osName = ModuleDescriptor.module("foo").osName("Linux").build().osName().get(); |
1176 String osName = ModuleDescriptor.newModule("foo").osName("Linux").build().osName().get(); |
940 assertEquals(osName, "Linux"); |
1177 assertEquals(osName, "Linux"); |
941 } |
1178 } |
942 |
1179 |
943 @Test(expectedExceptions = IllegalArgumentException.class) |
1180 @Test(expectedExceptions = IllegalArgumentException.class) |
944 public void testNullOsName() { |
1181 public void testNullOsName() { |
945 ModuleDescriptor.module("foo").osName(null); |
1182 ModuleDescriptor.newModule("foo").osName(null); |
946 } |
1183 } |
947 |
1184 |
948 @Test(expectedExceptions = IllegalArgumentException.class) |
1185 @Test(expectedExceptions = IllegalArgumentException.class) |
949 public void testEmptyOsName() { |
1186 public void testEmptyOsName() { |
950 ModuleDescriptor.module("foo").osName(""); |
1187 ModuleDescriptor.newModule("foo").osName(""); |
951 } |
1188 } |
952 |
1189 |
953 |
1190 |
954 // osArch |
1191 // osArch |
955 |
1192 |
956 public void testOsArch() { |
1193 public void testOsArch() { |
957 String osArch = ModuleDescriptor.module("foo").osName("arm").build().osName().get(); |
1194 String osArch = ModuleDescriptor.newModule("foo").osName("arm").build().osName().get(); |
958 assertEquals(osArch, "arm"); |
1195 assertEquals(osArch, "arm"); |
959 } |
1196 } |
960 |
1197 |
961 @Test(expectedExceptions = IllegalArgumentException.class) |
1198 @Test(expectedExceptions = IllegalArgumentException.class) |
962 public void testNullOsArch() { |
1199 public void testNullOsArch() { |
963 ModuleDescriptor.module("foo").osArch(null); |
1200 ModuleDescriptor.newModule("foo").osArch(null); |
964 } |
1201 } |
965 |
1202 |
966 @Test(expectedExceptions = IllegalArgumentException.class) |
1203 @Test(expectedExceptions = IllegalArgumentException.class) |
967 public void testEmptyOsArch() { |
1204 public void testEmptyOsArch() { |
968 ModuleDescriptor.module("foo").osArch(""); |
1205 ModuleDescriptor.newModule("foo").osArch(""); |
969 } |
1206 } |
970 |
1207 |
971 |
1208 |
972 // osVersion |
1209 // osVersion |
973 |
1210 |
974 public void testOsVersion() { |
1211 public void testOsVersion() { |
975 String osVersion = ModuleDescriptor.module("foo").osName("11.2").build().osName().get(); |
1212 String osVersion = ModuleDescriptor.newModule("foo").osName("11.2").build().osName().get(); |
976 assertEquals(osVersion, "11.2"); |
1213 assertEquals(osVersion, "11.2"); |
977 } |
1214 } |
978 |
1215 |
979 @Test(expectedExceptions = IllegalArgumentException.class) |
1216 @Test(expectedExceptions = IllegalArgumentException.class) |
980 public void testNullOsVersion() { |
1217 public void testNullOsVersion() { |
981 ModuleDescriptor.module("foo").osVersion(null); |
1218 ModuleDescriptor.newModule("foo").osVersion(null); |
982 } |
1219 } |
983 |
1220 |
984 @Test(expectedExceptions = IllegalArgumentException.class) |
1221 @Test(expectedExceptions = IllegalArgumentException.class) |
985 public void testEmptyOsVersion() { |
1222 public void testEmptyOsVersion() { |
986 ModuleDescriptor.module("foo").osVersion(""); |
1223 ModuleDescriptor.newModule("foo").osVersion(""); |
987 } |
1224 } |
988 |
1225 |
989 // reads |
1226 // reads |
990 |
1227 |
991 private static InputStream EMPTY_INPUT_STREAM = new InputStream() { |
1228 private static InputStream EMPTY_INPUT_STREAM = new InputStream() { |