aboutsummaryrefslogtreecommitdiff
path: root/spec/outputs
diff options
context:
space:
mode:
Diffstat (limited to 'spec/outputs')
-rw-r--r--spec/outputs/test/switch_spec.lua245
1 files changed, 244 insertions, 1 deletions
diff --git a/spec/outputs/test/switch_spec.lua b/spec/outputs/test/switch_spec.lua
index 59ffca5..1f436b8 100644
--- a/spec/outputs/test/switch_spec.lua
+++ b/spec/outputs/test/switch_spec.lua
@@ -727,7 +727,7 @@ return describe("switch", function()
727 end 727 end
728 return assert.same(result, "matched cool") 728 return assert.same(result, "matched cool")
729 end) 729 end)
730 return it("should handle switch in function call", function() 730 it("should handle switch in function call", function()
731 local something = 1 731 local something = 1
732 local getValue 732 local getValue
733 getValue = function() 733 getValue = function()
@@ -739,4 +739,247 @@ return describe("switch", function()
739 end 739 end
740 return assert.same(getValue(), "yes") 740 return assert.same(getValue(), "yes")
741 end) 741 end)
742 it("should match empty list pattern with []", function()
743 local emptyArray = { }
744 local hashTable = {
745 a = 1,
746 b = 2
747 }
748 local arrayWithElements = {
749 1,
750 2,
751 3
752 }
753 local result1
754 do
755 local _type_0 = type(emptyArray)
756 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
757 local _match_0 = false
758 if _tab_0 then
759 if #emptyArray == 0 then
760 _match_0 = true
761 result1 = "empty list"
762 end
763 end
764 if not _match_0 then
765 result1 = "not empty list"
766 end
767 end
768 assert.same(result1, "empty list")
769 local result2
770 do
771 local _type_0 = type(hashTable)
772 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
773 local _match_0 = false
774 if _tab_0 then
775 if #hashTable == 0 then
776 _match_0 = true
777 result2 = "empty list"
778 end
779 end
780 if not _match_0 then
781 result2 = "not empty list"
782 end
783 end
784 assert.same(result2, "empty list")
785 local result3
786 do
787 local _type_0 = type(arrayWithElements)
788 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
789 local _match_0 = false
790 if _tab_0 then
791 if #arrayWithElements == 0 then
792 _match_0 = true
793 result3 = "empty list"
794 end
795 end
796 if not _match_0 then
797 result3 = "not empty list"
798 end
799 end
800 return assert.same(result3, "not empty list")
801 end)
802 it("should match empty table pattern with {}", function()
803 local emptyTable = { }
804 local hashTable = {
805 a = 1
806 }
807 local arrayTable = {
808 1
809 }
810 local result1
811 do
812 local _type_0 = type(emptyTable)
813 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
814 local _match_0 = false
815 if _tab_0 then
816 if next(emptyTable) == nil then
817 _match_0 = true
818 result1 = "empty table"
819 end
820 end
821 if not _match_0 then
822 result1 = "not empty table"
823 end
824 end
825 assert.same(result1, "empty table")
826 local result2
827 do
828 local _type_0 = type(hashTable)
829 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
830 local _match_0 = false
831 if _tab_0 then
832 if next(hashTable) == nil then
833 _match_0 = true
834 result2 = "empty table"
835 end
836 end
837 if not _match_0 then
838 result2 = "not empty table"
839 end
840 end
841 assert.same(result2, "not empty table")
842 local result3
843 do
844 local _type_0 = type(arrayTable)
845 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
846 local _match_0 = false
847 if _tab_0 then
848 if next(arrayTable) == nil then
849 _match_0 = true
850 result3 = "empty table"
851 end
852 end
853 if not _match_0 then
854 result3 = "not empty table"
855 end
856 end
857 return assert.same(result3, "not empty table")
858 end)
859 it("should distinguish between [] and {} patterns", function()
860 local classify
861 classify = function(x)
862 local _type_0 = type(x)
863 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
864 local _match_0 = false
865 if _tab_0 then
866 if next(x) == nil then
867 _match_0 = true
868 return "truly empty"
869 end
870 end
871 if not _match_0 then
872 local _match_1 = false
873 if _tab_0 then
874 if #x == 0 then
875 _match_1 = true
876 return "no array elements"
877 end
878 end
879 if not _match_1 then
880 return "has elements"
881 end
882 end
883 end
884 assert.same(classify({ }), "truly empty")
885 assert.same(classify({
886 a = 1
887 }), "no array elements")
888 return assert.same(classify({
889 1,
890 2
891 }), "has elements")
892 end)
893 it("should handle empty list pattern with then syntax", function()
894 local result
895 do
896 local _exp_0 = { }
897 local _type_0 = type(_exp_0)
898 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
899 local _match_0 = false
900 if _tab_0 then
901 if #_exp_0 == 0 then
902 _match_0 = true
903 result = "matched"
904 end
905 end
906 if not _match_0 then
907 result = "not matched"
908 end
909 end
910 return assert.same(result, "matched")
911 end)
912 it("should handle empty table pattern with then syntax", function()
913 local result
914 do
915 local _exp_0 = { }
916 local _type_0 = type(_exp_0)
917 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
918 local _match_0 = false
919 if _tab_0 then
920 if next(_exp_0) == nil then
921 _match_0 = true
922 result = "matched"
923 end
924 end
925 if not _match_0 then
926 result = "not matched"
927 end
928 end
929 return assert.same(result, "matched")
930 end)
931 return it("should match empty patterns with multiple when branches", function()
932 local emptyArray = { }
933 local emptyHash = { }
934 local result1
935 do
936 local _type_0 = type(emptyArray)
937 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
938 local _match_0 = false
939 if _tab_0 then
940 if 1 == emptyArray[1] then
941 _match_0 = true
942 result1 = "has 1"
943 end
944 end
945 if not _match_0 then
946 local _match_1 = false
947 if _tab_0 then
948 if #emptyArray == 0 then
949 _match_1 = true
950 result1 = "empty list"
951 end
952 end
953 if not _match_1 then
954 result1 = "other"
955 end
956 end
957 end
958 assert.same(result1, "empty list")
959 local result2
960 do
961 local _type_0 = type(emptyHash)
962 local _tab_0 = "table" == _type_0 or "userdata" == _type_0
963 local _match_0 = false
964 if _tab_0 then
965 if 1 == emptyHash.a then
966 _match_0 = true
967 result2 = "has a"
968 end
969 end
970 if not _match_0 then
971 local _match_1 = false
972 if _tab_0 then
973 if next(emptyHash) == nil then
974 _match_1 = true
975 result2 = "empty table"
976 end
977 end
978 if not _match_1 then
979 result2 = "other"
980 end
981 end
982 end
983 return assert.same(result2, "empty table")
984 end)
742end) 985end)