@@ -115,3 +115,35 @@ add_revisions(Db, DocId, Rev, N) ->
115115 Rev ,
116116 lists :seq (1 , N )
117117 ).
118+
119+ rev_to_str_test () ->
120+ ? assertEqual (<<" 0-0" >>, couch_doc :rev_to_str ({0 , " 0" })),
121+ ? assertEqual (<<" 0-0" >>, couch_doc :rev_to_str ({0 , <<" 0" >>})),
122+ ? assertEqual (<<" 1-a" >>, couch_doc :rev_to_str ({1 , <<" a" >>})),
123+ Bytes = <<<<48 >> || _ <- lists :seq (1 , 16 )>>,
124+ ? assertEqual (<<" 0-0000000000000000" >>, couch_doc :rev_to_str ({0 , Bytes })),
125+ ? assertEqual (<<" 1-30303030303030303030303030303030" >>, couch_doc :rev_to_str ({1 , Bytes })),
126+ ? assertError (badarg , couch_doc :rev_to_str ({a , b })),
127+ ? assertError (function_clause , couch_doc :rev_to_str ({- 1 , <<" x" >>})),
128+ ? assertError (function_clause , couch_doc :rev_to_str (foo )).
129+
130+ parse_rev_test () ->
131+ ? assertEqual ({1 , <<" x" >>}, couch_doc :parse_rev (" 1-x" )),
132+ ? assertEqual ({1 , <<" x" >>}, couch_doc :parse_rev (<<" 1-x" >>)),
133+ ? assertEqual ({0 , <<" y" >>}, couch_doc :parse_rev (" 0-y" )),
134+ ? assertEqual ({1234567890 , <<" abc" >>}, couch_doc :parse_rev (" 1234567890-abc" )),
135+ ? assertEqual (
136+ {0 , <<" 00000000000000000000000000000000" >>},
137+ couch_doc :parse_rev (" 0-00000000000000000000000000000000" )
138+ ),
139+ ? assertEqual (
140+ {1 , <<0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 >>},
141+ couch_doc :parse_rev (" 1-00000000000000000000000000000000" )
142+ ),
143+ ? assertThrow ({bad_request , _ }, couch_doc :parse_rev (foo )),
144+ ? assertThrow ({bad_request , _ }, couch_doc :parse_rev (" x-y" )),
145+ ? assertThrow ({bad_request , _ }, couch_doc :parse_rev (" x" )),
146+ ? assertThrow ({bad_request , _ }, couch_doc :parse_rev (" 0" )),
147+ ? assertThrow ({bad_request , _ }, couch_doc :parse_rev (" 1" )),
148+ ? assertThrow ({bad_request , _ }, couch_doc :parse_rev (" -" )),
149+ ? assertThrow ({bad_request , _ }, couch_doc :parse_rev (" -0-1" )).
0 commit comments