Mercurial > projects > mde
view mde/file/mergetag/MTTagUnittest.d @ 136:4084f07f2c7a
Added simpler mergetag readers and writers, with unittest.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sun, 01 Feb 2009 12:36:21 +0000 |
parents | |
children | 9f035cd139c6 |
line wrap: on
line source
/* LICENSE BLOCK Part of mde: a Modular D game-oriented Engine Copyright © 2007-2008 Diggory Hardy This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program 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. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /****************************************************************************** * A unittest for the tag reader and writer. *****************************************************************************/ module mde.file.mergetag.MTTagUnittest; debug (mdeUnitTest) { import mde.file.mergetag.MTTagReader; import mde.file.mergetag.MTTagWriter; import tango.io.FilePath; import tango.util.log.Log : Log, Logger; private Logger logger; static this() { logger = Log.getLogger ("mde.file.mergetag.MTTagUnittest"); } unittest { auto file = FilePath("unittest.mtt"); struct S { char[] type, id, data; } static S tag1 = { type:"t1", id:"i1", data:"123"}; static S tag2 = { type:"t2", id:"i2", data:"abc"}; static S tag3 = { type:"t3", id:"i3", data:"\" a string \""}; static S tag4 = { type:"t1", id:"i1", data:"5.-98"}; MTTagWriter w = makeMTTagWriter (file.toString); w.dataTag (tag2.type, tag2.id, tag2.data); w.sectionTag ("one"); w.dataTag (tag1.type, tag1.id, tag1.data); w.sectionTag ("three"); w.dataTag (tag3.type, tag3.id, tag3.data); w.writeTag ("one", tag4.type, tag4.id, tag4.data); w.close; MTTagReader r = makeMTTagReader (file); bool isSecTag; while (r.readTag (isSecTag)) { if (isSecTag) continue; if (r.tagID == tag1.id) { assert (r.tagType == tag1.type, r.tagID); assert (r.tagData == tag1.data || r.tagData == tag4.data, r.tagID); } else if (r.tagID == tag2.id) { assert (r.tagType == tag2.type, r.tagID); assert (r.tagData == tag2.data, r.tagID); } else if (r.tagID == tag3.id) { assert (r.tagType == tag3.type, r.tagID); assert (r.tagData == tag3.data, r.tagID); } else assert (false, "extra tag: "~r.tagID); } // Delete the unittest file now file.remove; logger.info ("Unittest complete."); } }