File tree Expand file tree Collapse file tree 7 files changed +118
-0
lines changed
unit/basic/operation_tree_builders Expand file tree Collapse file tree 7 files changed +118
-0
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ module Basic
14
14
Differs ::Hash ,
15
15
Differs ::TimeLike ,
16
16
Differs ::DateLike ,
17
+ Differs ::RangeObject ,
17
18
Differs ::MultilineString ,
18
19
Differs ::CustomObject ,
19
20
Differs ::DefaultObject
@@ -37,6 +38,7 @@ module Basic
37
38
OperationTreeBuilders ::TimeLike ,
38
39
OperationTreeBuilders ::DateLike ,
39
40
OperationTreeBuilders ::CustomObject ,
41
+ OperationTreeBuilders ::RangeObject ,
40
42
OperationTreeBuilders ::DataObject
41
43
)
42
44
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ module Differs
4
4
autoload :Array , "super_diff/basic/differs/array"
5
5
autoload :CustomObject , "super_diff/basic/differs/custom_object"
6
6
autoload :DateLike , "super_diff/basic/differs/date_like"
7
+ autoload :RangeObject , "super_diff/basic/differs/range_object"
7
8
autoload :DefaultObject , "super_diff/basic/differs/default_object"
8
9
autoload :Hash , "super_diff/basic/differs/hash"
9
10
autoload :MultilineString , "super_diff/basic/differs/multiline_string"
Original file line number Diff line number Diff line change
1
+ module SuperDiff
2
+ module Basic
3
+ module Differs
4
+ class RangeObject < Core ::AbstractDiffer
5
+ def self . applies_to? ( expected , actual )
6
+ expected . is_a? ( Range ) && actual . is_a? ( Range )
7
+ end
8
+
9
+ protected
10
+
11
+ def operation_tree_builder_class
12
+ OperationTreeBuilders ::RangeObject
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
Original file line number Diff line number Diff line change @@ -22,6 +22,8 @@ module OperationTreeBuilders
22
22
)
23
23
autoload :TimeLike , "super_diff/basic/operation_tree_builders/time_like"
24
24
autoload :DateLike , "super_diff/basic/operation_tree_builders/date_like"
25
+ autoload :RangeObject ,
26
+ "super_diff/basic/operation_tree_builders/range_object"
25
27
26
28
class Main
27
29
def self . call ( *args )
Original file line number Diff line number Diff line change
1
+ module SuperDiff
2
+ module Basic
3
+ module OperationTreeBuilders
4
+ class RangeObject < SuperDiff ::Core ::AbstractOperationTreeBuilder
5
+ def self . applies_to? ( expected , actual )
6
+ expected . is_a? ( Range ) && actual . is_a? ( Range )
7
+ end
8
+
9
+ protected
10
+
11
+ def unary_operations
12
+ [
13
+ Core ::UnaryOperation . new (
14
+ name : :delete ,
15
+ collection : expected . to_s ,
16
+ key : 0 ,
17
+ index : 0 ,
18
+ value : expected . to_s
19
+ ) ,
20
+ Core ::UnaryOperation . new (
21
+ name : :insert ,
22
+ collection : actual . to_s ,
23
+ key : 0 ,
24
+ index : 0 ,
25
+ value : actual . to_s
26
+ )
27
+ ]
28
+ end
29
+
30
+ def build_operation_tree
31
+ OperationTrees ::MultilineString . new ( [ ] )
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
Original file line number Diff line number Diff line change 1056
1056
end
1057
1057
end
1058
1058
1059
+ context "when comparing ranges" do
1060
+ it "produces the correct failure message when used in the positive" do
1061
+ as_both_colored_and_uncolored do |color_enabled |
1062
+ snippet = "expect(1..5).to eq(5..6)"
1063
+ program = make_plain_test_program ( snippet , color_enabled : color_enabled )
1064
+
1065
+ expected_output =
1066
+ build_expected_output (
1067
+ color_enabled : color_enabled ,
1068
+ snippet : snippet ,
1069
+ newline_before_expectation : true ,
1070
+ expectation :
1071
+ proc do
1072
+ line do
1073
+ plain "Expected "
1074
+ actual "1..5"
1075
+ plain " to eq "
1076
+ expected "5..6"
1077
+ plain "."
1078
+ end
1079
+ end ,
1080
+ diff :
1081
+ proc do
1082
+ expected_line "- 5..6"
1083
+ actual_line "+ 1..5"
1084
+ end
1085
+ )
1086
+
1087
+ expect ( program ) . to produce_output_when_run ( expected_output ) . in_color (
1088
+ color_enabled
1089
+ )
1090
+ end
1091
+ end
1092
+ end
1093
+
1059
1094
it_behaves_like "a matcher that supports elided diffs" do
1060
1095
let ( :matcher ) { :eq }
1061
1096
end
Original file line number Diff line number Diff line change
1
+ require "spec_helper"
2
+
3
+ RSpec . describe SuperDiff , type : :unit do
4
+ describe ".diff" do
5
+ subject ( :diff ) { described_class . diff ( a , b ) }
6
+
7
+ context "when given two Range objects" do
8
+ let ( :a ) { 1 ..5 }
9
+ let ( :b ) { 5 ..6 }
10
+
11
+ it "diffs their member attributes" do
12
+ expected_output =
13
+ SuperDiff ::Core ::Helpers
14
+ . style ( color_enabled : true ) do
15
+ expected_line "- 1..5"
16
+ actual_line "+ 5..6"
17
+ end
18
+ . to_s
19
+ . chomp
20
+
21
+ expect ( diff ) . to eq ( expected_output )
22
+ end
23
+ end
24
+ end
25
+ end
You can’t perform that action at this time.
0 commit comments