@@ -113,6 +113,54 @@ test_that("Using non-position guides for position scales results in an informati
113
113
expect_error(ggplot_gtable(built ), " does not implement guide_transform()" )
114
114
})
115
115
116
+ test_that(" guide merging for guide_legend() works as expected" , {
117
+
118
+ merge_test_guides <- function (scale1 , scale2 ) {
119
+ scale1 $ guide <- guide_legend(direction = " vertical" )
120
+ scale2 $ guide <- guide_legend(direction = " vertical" )
121
+ scales <- scales_list()
122
+ scales $ add(scale1 )
123
+ scales $ add(scale2 )
124
+
125
+ guide_list <- guides_train(scales , theme = theme_gray(), labels = labs(), guides = guides())
126
+ guides_merge(guide_list )
127
+ }
128
+
129
+ different_limits <- merge_test_guides(
130
+ scale_colour_discrete(limits = c(" a" , " b" , " c" , " d" )),
131
+ scale_linetype_discrete(limits = c(" a" , " b" , " c" ))
132
+ )
133
+ expect_length(different_limits , 2 )
134
+
135
+ same_limits <- merge_test_guides(
136
+ scale_colour_discrete(limits = c(" a" , " b" , " c" )),
137
+ scale_linetype_discrete(limits = c(" a" , " b" , " c" ))
138
+ )
139
+ expect_length(same_limits , 1 )
140
+ expect_equal(same_limits [[1 ]]$ key $ .label , c(" a" , " b" , " c" ))
141
+
142
+ same_labels_different_limits <- merge_test_guides(
143
+ scale_colour_discrete(limits = c(" a" , " b" , " c" )),
144
+ scale_linetype_discrete(limits = c(" one" , " two" , " three" ), labels = c(" a" , " b" , " c" ))
145
+ )
146
+ expect_length(same_labels_different_limits , 1 )
147
+ expect_equal(same_labels_different_limits [[1 ]]$ key $ .label , c(" a" , " b" , " c" ))
148
+
149
+ same_labels_different_scale <- merge_test_guides(
150
+ scale_colour_continuous(limits = c(0 , 4 ), breaks = 1 : 3 , labels = c(" a" , " b" , " c" )),
151
+ scale_linetype_discrete(limits = c(" a" , " b" , " c" ))
152
+ )
153
+ expect_length(same_labels_different_scale , 1 )
154
+ expect_equal(same_labels_different_scale [[1 ]]$ key $ .label , c(" a" , " b" , " c" ))
155
+
156
+ repeated_identical_labels <- merge_test_guides(
157
+ scale_colour_discrete(limits = c(" one" , " two" , " three" ), labels = c(" label1" , " label1" , " label2" )),
158
+ scale_linetype_discrete(limits = c(" 1" , " 2" , " 3" ), labels = c(" label1" , " label1" , " label2" ))
159
+ )
160
+ expect_length(repeated_identical_labels , 1 )
161
+ expect_equal(repeated_identical_labels [[1 ]]$ key $ .label , c(" label1" , " label1" , " label2" ))
162
+ })
163
+
116
164
# Visual tests ------------------------------------------------------------
117
165
118
166
test_that(" axis guides are drawn correctly" , {
0 commit comments