diff --git a/tests/compare_to_rope.sml b/tests/compare_to_rope.sml index cbe1394..982eebd 100644 --- a/tests/compare_to_rope.sml +++ b/tests/compare_to_rope.sml @@ -1,69 +1,74 @@ structure CompareToRope = struct -fun compareTxns arr = - Vector.foldli - (fn (idx, (pos, delNum, insStr), (rope, gapBuffer)) => - let - val _ = print ("idx: " ^ Int.toString idx ^ "\n") - val oldRope = rope - val strSize = String.size insStr + fun compareTxns arr = + Vector.foldli + (fn (idx, (pos, delNum, insStr), (rope, gapBuffer)) => + let + val _ = print ("idx: " ^ Int.toString idx ^ "\n") + val oldRope = rope + val strSize = String.size insStr - val rope = - if strSize > 0 then TinyRope.insert (pos, insStr, rope) else rope + val rope = + if delNum > 0 then TinyRope.delete (pos, delNum, rope) else rope + val rope = + if strSize > 0 then TinyRope.insert (pos, insStr, rope) else rope - val gapBuffer = - if strSize > 0 then LineGap.insert (pos, insStr, gapBuffer) - else gapBuffer + val gapBuffer = + if delNum > 0 then LineGap.delete (pos, delNum, gapBuffer) + else gapBuffer + val gapBuffer = + if strSize > 0 then LineGap.insert (pos, insStr, gapBuffer) + else gapBuffer - val ropeString = TinyRope.toString rope - val gapBufferString = LineGap.toString gapBuffer - in - if ropeString = gapBufferString then - (rope, gapBuffer) - else - let - val _ = print - ("difference detected at txn number: " ^ (Int.toString idx) - ^ "\n") - val txn = String.concat - [ "offending txn: \n" - , "pos: " - , Int.toString pos - , ", delNum: " - , Int.toString delNum - , ", insStr: |" - , insStr - , "|\n" - ] - val _ = print txn - - val _ = print "before offending string: \n" - val _ = print (TinyRope.toString oldRope) - val _ = print "\n" - - val _ = print "rope string: \n" - val _ = print (ropeString ^ "\n") - val _ = print "gap string: \n" - val _ = print (gapBufferString ^ "\n") - val _ = raise Empty - in + val ropeString = TinyRope.toString rope + val gapBufferString = LineGap.toString gapBuffer + in + if ropeString = gapBufferString then (rope, gapBuffer) - end - end) (TinyRope.empty, LineGap.empty) arr + else + let + val _ = print + ("difference detected at txn number: " ^ (Int.toString idx) + ^ "\n") + val txn = String.concat + [ "offending txn: \n" + , "pos: " + , Int.toString pos + , ", delNum: " + , Int.toString delNum + , ", insStr: |" + , insStr + , "|\n" + ] + val _ = print txn + + val _ = print "before offending string: \n" + val _ = print (TinyRope.toString oldRope) + val _ = print "\n" + + val _ = print "rope string: \n" + val _ = print (ropeString ^ "\n") + val _ = print "gap string: \n" + val _ = print (gapBufferString ^ "\n") + val _ = raise Empty + in + (rope, gapBuffer) + end + end) (TinyRope.empty, LineGap.empty) arr fun main () = - let - val (rope, gap) = compareTxns SvelteComponent.txns - val _ = print "string contents are equal\n" - val _ = LineGap.verifyLines gap + let + val (rope, gap) = compareTxns SvelteComponent.txns + val _ = print "string contents are equal\n" + val _ = LineGap.verifyLines gap (* val _ = compareTxns Rust.txns val _ = compareTxns Seph.txns val _ = compareTxns Automerge.txns *) - in - () - end + in + () + end val _ = main () end