@@ -44,3 +44,39 @@ class TestUIDPlusData < Test::Unit::TestCase
44
44
end
45
45
46
46
end
47
+
48
+ class TestAppendUIDData < Test ::Unit ::TestCase
49
+ # alias for convenience
50
+ AppendUIDData = Net ::IMAP ::AppendUIDData
51
+ SequenceSet = Net ::IMAP ::SequenceSet
52
+ DataFormatError = Net ::IMAP ::DataFormatError
53
+ UINT32_MAX = 2 **32 - 1
54
+
55
+ test "#uidvalidity must be valid nz-number" do
56
+ assert_equal 1 , AppendUIDData . new ( 1 , 99 ) . uidvalidity
57
+ assert_equal UINT32_MAX , AppendUIDData . new ( UINT32_MAX , 1 ) . uidvalidity
58
+ assert_raise DataFormatError do AppendUIDData . new ( 0 , 1 ) end
59
+ assert_raise DataFormatError do AppendUIDData . new ( 2 **32 , 1 ) end
60
+ end
61
+
62
+ test "#assigned_uids must be a valid uid-set" do
63
+ assert_equal SequenceSet [ 1 ] , AppendUIDData . new ( 99 , "1" ) . assigned_uids
64
+ assert_equal SequenceSet [ 1 ..9 ] , AppendUIDData . new ( 1 , "1:9" ) . assigned_uids
65
+ assert_equal ( SequenceSet [ UINT32_MAX ] ,
66
+ AppendUIDData . new ( 1 , UINT32_MAX . to_s ) . assigned_uids )
67
+ assert_raise DataFormatError do AppendUIDData . new ( 1 , 0 ) end
68
+ assert_raise DataFormatError do AppendUIDData . new ( 1 , "*" ) end
69
+ assert_raise DataFormatError do AppendUIDData . new ( 1 , "1:*" ) end
70
+ end
71
+
72
+ test "#size returns the number of UIDs" do
73
+ assert_equal ( 10 , AppendUIDData . new ( 1 , "1:10" ) . size )
74
+ assert_equal ( 4_000_000_000 , AppendUIDData . new ( 1 , 1 ..4_000_000_000 ) . size )
75
+ end
76
+
77
+ test "#assigned_uids is converted to SequenceSet" do
78
+ assert_equal SequenceSet [ 1 ] , AppendUIDData . new ( 99 , "1" ) . assigned_uids
79
+ assert_equal SequenceSet [ 1 ..4 ] , AppendUIDData . new ( 1 , [ 1 , 2 , 3 , 4 ] ) . assigned_uids
80
+ end
81
+
82
+ end
0 commit comments