# This file is part of NIT ( http://www.nitlanguage.org ). # # This file is free software, which comes along with NIT. This software is # distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. You can modify it is you want, provided this header # is kept unaltered, and a notification of the changes is added. # You are allowed to redistribute it and sell it, alone or is a part of # another product. module test_abstract_text is test_suite import test_suite import text intrude import ropes class TestText super TestSuite private var factories: Collection[TextFactory] = [ new ConcatFactory, new RopeBufferFactory, new FlatBufferFactory : TextFactory] fun test_escape_to_c do for f in factories do assert f.create("abAB12<>&").escape_to_c == "abAB12<>&" assert f.create("\n\"'\\").escape_to_c == "\\n\\\"\\'\\\\" assert f.create("allo???!").escape_to_c == "allo??\\?!" assert f.create("??=??/??'??(??)").escape_to_c == "?\\?=?\\?/??\\'?\\?(?\\?)" assert f.create("??!????-").escape_to_c == "?\\?!?\\??\\?-" end end end # A factory that creates instances of a particular implementation of `Text` interface TextFactory # Create a `Text` instance from the specified string fun create(s: String): Text is abstract end class ConcatFactory super TextFactory redef fun create(s) do return new Concat("", s) end class RopeBufferFactory super TextFactory redef fun create(s) do return new RopeBuffer.from(s) end class FlatBufferFactory super TextFactory redef fun create(s) do return new FlatBuffer.from(s) end