#! /usr/bin/env python
# -*- coding: iso-8859-1 -*-
#-----------------------------------------------------------------------------
# Modeling Framework: an Object-Relational Bridge for python
#
# Copyright (c) 2001-2004 Sbastien Bigaret <sbigaret@users.sourceforge.net>
# All rights reserved.
#
# This file is part of the Modeling Framework.
#
# This code is distributed under a "3-clause BSD"-style license;
# see the LICENSE file for details.
#-----------------------------------------------------------------------------
"""Test the Model"""
if __name__ == "__main__":
import utils, sys
utils.fixpath()
import unittest, filecmp, os, sys
from Modeling import ModelSet
class TestImportExport(unittest.TestCase):
"Tests of import/export functionalities"
def setUp(self):
"[Import/Export] Setup"
pass
def _test_import_debug(self):
"[Import/Export] test: only tests that there's no exception raised"
modelSet=ModelSet.ModelSet()
modelSet.addModelFromXML({'file': 'test_model.xml'})
print modelSet.modelsNames()
print modelSet.entitiesNames()
for model in modelSet.models():
sys.stderr.write(" %s / %s"%(model.name(), model.entities()))
for entity in model.entities():
sys.stderr.write(" %s"%str(entity.attributesNames()))
sys.stderr.write(" %s"%str(entity.relationshipsNames()))
def _test_import_export(self, modelPath, modelName):
"[Import/Export] Import/exports twice & checks that exports are identical"
# Load model
modelSet=ModelSet.ModelSet()
modelSet.addModelFromXML({'file': modelPath})
#
try: os.unlink('test_unittest_model1.xml')
except: pass
try: os.unlink('test_unittest_model2.xml')
except: pass
# First phase
modelSet.modelNamed(modelName).saveModelAsXMLFile('test_unittest_model1.xml')
# Second phase
modelSet=ModelSet.ModelSet()
modelSet.addModelFromXML({'file': 'test_unittest_model1.xml'})
modelSet.modelNamed(modelName).saveModelAsXMLFile('test_unittest_model2.xml')
# Compare
self.failUnless(filecmp.cmp('test_unittest_model1.xml',
'test_unittest_model2.xml'),
'test on file %s'%modelPath)
# unlink
os.unlink('test_unittest_model1.xml')
os.unlink('test_unittest_model2.xml')
def test_import_export(self):
"[Import/Export] import+export"
self._test_import_export('xmlmodels/model_testSimpleModel.xml', 'testModel')
self._test_import_export('xmlmodels/model_AuthorBook.xml', 'AuthorBook')
self._test_import_export('xmlmodels/model_testISO_8859_1.xml',
'testISO_8859_1')
def tearDown(self):
"[Import/Export] tearDown"
pass
# Support for the Zope regression test framework:
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestImportExport, "test_"))
return suite
if __name__ == "__main__":
errs = utils.run_suite(test_suite())
sys.exit(errs and 1 or 0)
|