<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>t048rewrite</title> <!-- ANTLR includes --> <script type="text/javascript" src="../../lib/antlr3-all.js"></script> <script type="text/javascript" src="t048rewrite.js"></script> <!-- JsUnit include --> <script type="text/javascript" src="../jsunit/app/jsUnitCore.js"></script> <!-- Test Code --> <script type="text/javascript"> var TLexer = function() { TLexer.superclass.constructor.apply(this, arguments); }; org.antlr.lang.extend(TLexer, t048rewrite, { recover: function(re) { /* don't recover, just crash */ throw re; } }); function _parse(xinput) { var cstream = new org.antlr.runtime.ANTLRStringStream(xinput), lexer = new TLexer(cstream), tstream = new org.antlr.runtime.TokenRewriteStream(lexer); tstream.LT(1); // fill buffer return tstream; } function testInsertBeforeIndex0() { var tokens = _parse("abc"); tokens.insertBefore(0,"0"); var result = tokens.toString(), expecting = "0abc"; assertEquals(result, expecting); } function testInsertAfterLastIndex() { var tokens = _parse("abc"); tokens.insertAfter(2,"x"); var result = tokens.toString(), expecting = "abcx"; assertEquals(result, expecting); } function test2InsertBeforeAfterMiddleIndex() { var tokens = _parse("abc"); tokens.insertBefore(1,"x"); tokens.insertAfter(1, "x"); var result = tokens.toString(), expecting = "axbxc"; assertEquals(result, expecting); } function testReplaceIndex0() { var tokens = _parse("abc"); tokens.replace(0,"x"); var result = tokens.toString(), expecting = "xbc"; assertEquals(result, expecting); } function testReplaceLastIndex() { var tokens = _parse("abc"); tokens.replace(2,"x"); var result = tokens.toString(), expecting = "abx"; assertEquals(result, expecting); } function testReplaceMiddleIndex() { var tokens = _parse("abc"); tokens.replace(1,"x"); var result = tokens.toString(), expecting = "axc"; assertEquals(result, expecting); } function test2ReplaceMiddleIndex() { var tokens = _parse("abc"); tokens.replace(1,"x"); tokens.replace(1,"y"); var result = tokens.toString(), expecting = "ayc"; assertEquals(result, expecting); } function testReplaceThenDeleteMiddleIndex() { var tokens = _parse("abc"); tokens.replace(1,"x"); tokens.remove(1); var result = tokens.toString(), expecting = "ac"; assertEquals(result, expecting); } function testReplaceThenInsertSameIndex() { var tokens = _parse("abc"); tokens.replace(0,"x"); tokens.insertBefore(0,"0"); var result = tokens.toString(), expecting = "0xbc"; assertEquals(result, expecting); } function testReplaceThen2InsertSameIndex() { var tokens = _parse("abc"); tokens.replace(0,"x"); tokens.insertBefore(0,"y"); tokens.insertBefore(0,"z"); var result = tokens.toString(), expecting = "zyxbc"; assertEquals(result, expecting); } function testInsertThenReplaceSameIndex() { var tokens = _parse("abc"); tokens.insertBefore(0,"0"); tokens.replace(0,"x"); var result = tokens.toString(), expecting = "0xbc"; assertEquals(result, expecting); } function test2InsertMiddleIndex() { var tokens = _parse("abc"); tokens.insertBefore(1,"x"); tokens.insertBefore(1,"y"); var result = tokens.toString(), expecting = "ayxbc"; assertEquals(result, expecting); } function test2InsertThenReplaceIndex0() { var tokens = _parse("abc"); tokens.insertBefore(0,"x"); tokens.insertBefore(0,"y"); tokens.replace(0,"z"); var result = tokens.toString(), expecting = "yxzbc"; assertEquals(result, expecting); } function testReplaceThenInsertBeforeLastIndex() { var tokens = _parse("abc"); tokens.replace(2,"x"); tokens.insertBefore(2,"y"); var result = tokens.toString(), expecting = "abyx"; assertEquals(result, expecting); } function testInsertThenReplaceLastIndex() { var tokens = _parse("abc"); tokens.insertBefore(2,"y"); tokens.replace(2,"x"); var result = tokens.toString(), expecting = "abyx"; assertEquals(result, expecting); } function testReplaceThenInsertLastIndex() { var tokens = _parse("abc"); tokens.replace(2,"x"); tokens.insertAfter(2,"y"); var result = tokens.toString(), expecting = "abxy"; assertEquals(result, expecting); } function testReplaceRangeThenInsertInMiddle() { var tokens = _parse("abcccba"); tokens.replace(2,4,"x"); tokens.insertBefore(3,"y"); var result = tokens.toString(), expecting = "abxba"; assertEquals(result, expecting); } function testReplaceRangeThenInsertAtLeftEdge() { var tokens = _parse("abcccba"); tokens.replace(2,4,"x"); tokens.insertBefore(2,"y"); var result = tokens.toString(), expecting = "abyxba"; assertEquals(result, expecting); } function testReplaceRangeThenInsertAtRightEdge() { var tokens = _parse("abcccba"); tokens.replace(2,4,"x"); tokens.insertBefore(4,"y"); var result = tokens.toString(), expecting = "abxba"; assertEquals(result, expecting); } function testReplaceRangeThenInsertAfterRightEdge() { var tokens = _parse("abcccba"); tokens.replace(2,4,"x"); tokens.insertAfter(4,"y"); var result = tokens.toString(), expecting = "abxyba"; assertEquals(result, expecting); } function testReplaceAll() { var tokens = _parse("abcccba"); tokens.replace(0,6,"x"); var result = tokens.toString(), expecting = "x"; assertEquals(result, expecting); } function testReplaceSubsetThenFetch() { var tokens = _parse("abcccba"); tokens.replace(2,4,"xyz"); var result = tokens.toString(0,6), expecting = "abxyzba"; assertEquals(result, expecting); } function testReplaceThenReplaceSuperset() { var tokens = _parse("abcccba"); tokens.replace(2,4,"xyz"); tokens.replace(2,5,"foo"); var result = tokens.toString(), expecting = "abfooa"; assertEquals(result, expecting); } function testReplaceThenReplaceLowerIndexedSuperset() { var tokens = _parse("abcccba"); tokens.replace(2,4,"xyz"); tokens.replace(1,3,"foo"); var result = tokens.toString(), expecting = "afoocba"; assertEquals(result, expecting); } function testReplaceSingleMiddleThenOverlappingSuperset() { var tokens = _parse("abcba"); tokens.replace(2,2,"xyz"); tokens.replace(0,3,"foo"); var result = tokens.toString(), expecting = "fooa"; assertEquals(result, expecting); } </script> </head> <body> <h1>t048rewrite</h1> </body> </html>