| 1022 | |
| 1023 | |
| 1024 | def test_fuse_reductions_multiple_input(): |
| 1025 | def f(*args): |
| 1026 | return args |
| 1027 | |
| 1028 | d = {"a1": 1, "a2": 2, "b": (f, "a1", "a2"), "c": (f, "b")} |
| 1029 | assert fuse(d, ave_width=2, rename_keys=False) == with_deps({"c": (f, (f, 1, 2))}) |
| 1030 | assert fuse(d, ave_width=2, rename_keys=True) == with_deps( |
| 1031 | {"a1-a2-b-c": (f, (f, 1, 2)), "c": "a1-a2-b-c"} |
| 1032 | ) |
| 1033 | assert fuse(d, ave_width=1, rename_keys=False) == with_deps( |
| 1034 | {"a1": 1, "a2": 2, "c": (f, (f, "a1", "a2"))} |
| 1035 | ) |
| 1036 | assert fuse(d, ave_width=1, rename_keys=True) == with_deps( |
| 1037 | {"a1": 1, "a2": 2, "b-c": (f, (f, "a1", "a2")), "c": "b-c"} |
| 1038 | ) |
| 1039 | |
| 1040 | d = { |
| 1041 | "a1": 1, |
| 1042 | "a2": 2, |
| 1043 | "b1": (f, "a1"), |
| 1044 | "b2": (f, "a1", "a2"), |
| 1045 | "b3": (f, "a2"), |
| 1046 | "c": (f, "b1", "b2", "b3"), |
| 1047 | } |
| 1048 | expected = with_deps(d) |
| 1049 | assert fuse(d, ave_width=1, rename_keys=False) == expected |
| 1050 | assert fuse(d, ave_width=2.9, rename_keys=False) == expected |
| 1051 | assert fuse(d, ave_width=1, rename_keys=True) == expected |
| 1052 | assert fuse(d, ave_width=2.9, rename_keys=True) == expected |
| 1053 | assert fuse(d, ave_width=3, rename_keys=False) == with_deps( |
| 1054 | {"a1": 1, "a2": 2, "c": (f, (f, "a1"), (f, "a1", "a2"), (f, "a2"))} |
| 1055 | ) |
| 1056 | assert fuse(d, ave_width=3, rename_keys=True) == with_deps( |
| 1057 | { |
| 1058 | "a1": 1, |
| 1059 | "a2": 2, |
| 1060 | "b1-b2-b3-c": (f, (f, "a1"), (f, "a1", "a2"), (f, "a2")), |
| 1061 | "c": "b1-b2-b3-c", |
| 1062 | } |
| 1063 | ) |
| 1064 | |
| 1065 | d = { |
| 1066 | "a1": 1, |
| 1067 | "a2": 2, |
| 1068 | "b1": (f, "a1"), |
| 1069 | "b2": (f, "a1", "a2"), |
| 1070 | "b3": (f, "a2"), |
| 1071 | "c1": (f, "b1", "b2"), |
| 1072 | "c2": (f, "b2", "b3"), |
| 1073 | } |
| 1074 | assert fuse(d, ave_width=1, rename_keys=False) == with_deps(d) |
| 1075 | assert fuse(d, ave_width=1, rename_keys=True) == with_deps(d) |
| 1076 | assert fuse(d, ave_width=2, rename_keys=False) == with_deps( |
| 1077 | { |
| 1078 | "a1": 1, |
| 1079 | "a2": 2, |
| 1080 | "b2": (f, "a1", "a2"), |
| 1081 | "c1": (f, (f, "a1"), "b2"), |