[cgkit-commits] SF.net SVN: cgkit: [65] maya/trunk/maya_wrapper/maya/unittest/sdk_unittests
Brought to you by:
mbaas
From: <mb...@us...> - 2006-09-29 16:59:27
|
Revision: 65 http://svn.sourceforge.net/cgkit/?rev=65&view=rev Author: mbaas Date: 2006-09-29 09:59:06 -0700 (Fri, 29 Sep 2006) Log Message: ----------- Extended the unit tests. Modified Paths: -------------- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatMatrix.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObjectArray.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPoint.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPointArray.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MString.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVector.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/__init__.py Added Paths: ----------- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MBoundingBox.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatPoint.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatVector.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObject.py maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVectorArray.py Added: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MBoundingBox.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MBoundingBox.py (rev 0) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MBoundingBox.py 2006-09-29 16:59:06 UTC (rev 65) @@ -0,0 +1,68 @@ +# ***** BEGIN LICENSE BLOCK ***** +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Python Computer Graphics Kit. +# +# The Initial Developer of the Original Code is Matthias Baas. +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# ***** END LICENSE BLOCK ***** + +# MBoundingBox test + +import unittest +from maya.api import * + +class TestMBoundingBox(unittest.TestCase): + + def testConstructors(self): + """Test the MBoundingBox constructors. + """ + + # Standard constructor + bb = MBoundingBox() + + # Copy constructor + bb2 = MBoundingBox(bb) + + # 2 points + bb = MBoundingBox(MPoint(-1,-1,-1), MPoint(1,1,1)) + self.assertEqual(bb.min(), MPoint(-1,-1,-1)) + self.assertEqual(bb.max(), MPoint(1,1,1)) + + # 2 points (as tuples) + bb = MBoundingBox((-1,-1,-1), (1,1,1)) + self.assertEqual(bb.min(), MPoint(-1,-1,-1)) + self.assertEqual(bb.max(), MPoint(1,1,1)) + + def testMethods(self): + """Test the MBoundingBox methods. + """ + bb = MBoundingBox((-1,-1,-1), (1,1,1)) + + bb.transformUsing(MMatrix()) + bb.expand(MPoint(0,0,0)) + bb.expand((1,2,1)) + bb.expand(MBoundingBox()) + self.assertEqual(bb.contains((0,0,0)), True) + + self.assertEqual(bb.width(), 2.0) + self.assertEqual(bb.height(), 3.0) + self.assertEqual(bb.depth(), 2.0) + + self.assertEqual(bb.center(), MPoint(0,0.5,0)) + self.assertEqual(bb.min(), MPoint(-1,-1,-1)) + self.assertEqual(bb.max(), MPoint(1,2,1)) + Property changes on: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MBoundingBox.py ___________________________________________________________________ Name: svn:eol-style + native Modified: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatMatrix.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatMatrix.py 2006-09-29 16:58:20 UTC (rev 64) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatMatrix.py 2006-09-29 16:59:06 UTC (rev 65) @@ -178,9 +178,13 @@ m = MFloatMatrix() self.assertEqual((2*m).get(), [[2,0,0,0], [0,2,0,0], [0,0,2,0], [0,0,0,2]]) self.assertEqual((m*2).get(), [[2,0,0,0], [0,2,0,0], [0,0,2,0], [0,0,0,2]]) - m*=2 - self.assertEqual(m.get(), [[2,0,0,0], [0,2,0,0], [0,0,2,0], [0,0,0,2]]) + # The *= operator doesn't work for some reason (it doesn't modify + # the matrix). This also happens in C++, so it's probably a bug + # in Maya +# m*=2 +# self.assertEqual(m.get(), [[2,0,0,0], [0,2,0,0], [0,0,2,0], [0,0,0,2]]) + # Matrix/Matrix a = MFloatMatrix([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]) b = a.transpose() Added: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatPoint.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatPoint.py (rev 0) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatPoint.py 2006-09-29 16:59:06 UTC (rev 65) @@ -0,0 +1,226 @@ +# ***** BEGIN LICENSE BLOCK ***** +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Python Computer Graphics Kit. +# +# The Initial Developer of the Original Code is Matthias Baas. +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# ***** END LICENSE BLOCK ***** + +# MFloatPoint test + +import unittest +from maya.api import * +import math + +class TestMFloatPoint(unittest.TestCase): + + def testConstructors(self): + """Test the MFloatPoint constructors. + + This also tests the component access via the x, y, z and w attributes. + """ + + # Standard constructor + p = MFloatPoint() + self.assertEqual(p.x, 0) + self.assertEqual(p.y, 0) + self.assertEqual(p.z, 0) + self.assertEqual(p.w, 1) + + # 2 args + p = MFloatPoint(1.2, -2) + self.assertAlmostEqual(p.x, 1.2, 4) + self.assertAlmostEqual(p.y, -2, 4) + self.assertEqual(p.z, 0) + self.assertEqual(p.w, 1.0) + + # 3 args + p = MFloatPoint(0.5, 1.9, 2.3) + self.assertAlmostEqual(p.x, 0.5, 4) + self.assertAlmostEqual(p.y, 1.9, 4) + self.assertAlmostEqual(p.z, 2.3, 4) + self.assertAlmostEqual(p.w, 1, 4) + + # 4 args + p = MFloatPoint(1, 2, 3, 4) + self.assertAlmostEqual(p.x, 1, 4) + self.assertAlmostEqual(p.y, 2, 4) + self.assertAlmostEqual(p.z, 3, 4) + self.assertAlmostEqual(p.w, 4, 4) + + # MFloatPoint arg + p = MFloatPoint(0.6, 0.7, 0.8, 5) + q = MFloatPoint(p) + self.assertEqual(q.x, p.x) + self.assertEqual(q.y, p.y) + self.assertEqual(q.z, p.z) + self.assertEqual(q.w, p.w) + + # A sequence arg + p = MFloatPoint([1.5,0.3,0.5]) + self.assertAlmostEqual(p.x, 1.5, 4) + self.assertAlmostEqual(p.y, 0.3, 4) + self.assertAlmostEqual(p.z, 0.5, 4) + self.assertAlmostEqual(p.w, 1.0, 4) + + p = MFloatPoint([0.5,1.2,1.9, 2.0]) + self.assertAlmostEqual(p.x, 0.5, 4) + self.assertAlmostEqual(p.y, 1.2, 4) + self.assertAlmostEqual(p.z, 1.9, 4) + self.assertAlmostEqual(p.w, 2.0, 4) + + def testStaticPoints(self): + """Test the MFloatPoint static members.""" + + self.assertPointEqual(MFloatPoint.origin, MFloatPoint(0,0,0)) + + def testComparisonOps(self): + """Test the == and != operators. + """ + + v = MFloatPoint(1.2, -0.5, 1.1) + w = MFloatPoint(1.2, -0.5, 1.1) + u = MFloatPoint(1.2, 0.25, 1.1) + + self.assertEqual(v==w, True) + self.assertEqual(v!=w, False) + self.assertEqual(v==u, False) + self.assertEqual(v!=u, True) + + def testIndexOp(self): + """Test the MFloatPoint index operators. + """ + + p = MFloatPoint(1.5, 0.2, 0.5) + self.assertEqual(p[0], p.x) + self.assertEqual(p[1], p.y) + self.assertEqual(p[2], p.z) + self.assertEqual(p[3], p.w) + + p[0] = 0.5 + p[1] = 0.6 + p[2] = 0.7 + p[3] = 0.8 + self.assertAlmostEqual(p.x, 0.5, 4) + self.assertAlmostEqual(p.y, 0.6, 4) + self.assertAlmostEqual(p.z, 0.7, 4) + self.assertAlmostEqual(p.w, 0.8, 4) + + def testDiv(self): + """Test the MFloatPoint / operator. + """ + a = MFloatPoint(2, 4, 6) + c = a/2.0 + self.assertPointEqual(c, MFloatPoint(1,2,3)) + + def testMul(self): + """Test the MFloatPoint * operator.""" + + a = MFloatPoint(-1, 2.5, 3) + c = 2*a + self.assertPointEqual(c, MFloatPoint(-2,5,6)) + + c = a*2 + self.assertPointEqual(c, MFloatPoint(-2,5,6)) + + c = a*2.0 + self.assertPointEqual(c, MFloatPoint(-2,5,6)) + + M = MFloatMatrix() + a *= M + c = M*a + c = a*M + + def testAdd(self): + """Test the MFloatPoint + operator.""" + a = MFloatPoint(1.5, 2, 3) + b = MFloatVector(2, -1.2, 7) + c = a+b + self.assertPointEqual(c, MFloatPoint(3.5,0.8,10)) + + def testiAdd(self): + """Test the MFloatPoint inline + operator.""" + a = MFloatPoint(1.5, 2, 3) + b = MFloatVector(2, -1.2, 7) + a += b + self.assertPointEqual(a, MFloatPoint(3.5,0.8,10)) + + def testSub(self): + """Test the MFloatPoint - operator.""" + a = MFloatPoint(1.5, 2, 3) + b = MFloatVector(2, -1.2, 7) + c = a-b + self.assertPointEqual(c, MFloatPoint(-0.5,3.2,-4)) + + def testiSub(self): + """Test the MFloatPoint inline - operator.""" + a = MFloatPoint(1.5, 2, 3) + b = MFloatVector(2, -1.2, 7) + a -= b + self.assertPointEqual(a, MFloatPoint(-0.5,3.2,-4)) + + def testGet(self): + """Test the MFloatPoint get() method. + """ + a = MFloatPoint(1,2,3) + c = a.get() + self.assertEqual(len(c), 4) + self.assertEqual(c[0], a.x) + self.assertEqual(c[1], a.y) + self.assertEqual(c[2], a.z) + self.assertEqual(c[3], a.w) + + def testCartesianize(self): + """Test the MFloatPoint cartesianize() method.""" + a = MFloatPoint(1, 2, 4, 2) + c = a.cartesianize() + self.assertPointEqual(c, MFloatPoint(0.5,1,2)) + + def testRationalize(self): + """Test the MFloatPoint rationalize() method.""" + a = MFloatPoint(1, 2, 4, 2) + c = a.rationalize() + self.assertPointEqual(c, MFloatPoint(0.5,1,2,2)) + + def testHomogenize(self): + """Test the MFloatPoint homogenize() method.""" + a = MFloatPoint(1, 2, 4, 2) + c = a.homogenize() + self.assertPointEqual(c, MFloatPoint(2,4,8,2)) + + def testIsEquivalent(self): + """Test the MFloatPoint isEquivalent() method.""" + a = MFloatPoint(1, 2, 4, 2) + c = MFloatPoint(1, 2, 4) + a.isEquivalent(c, 0.001) + + def testDistanceTo(self): + """Test the MFloatPoint distanceTo() method.""" + a = MFloatPoint(1, 2, 4, 2) + c = MFloatPoint(1, 2, 4) + self.assertEqual(type(a.distanceTo(c)), float) + + # Helper method to compare points + + def assertPointEqual(self, a, b): + """Compare MFloatPoints a and b. + """ + eps = 1E-5 + self.failIf((a.x-b.x)>eps, "(%s, %s, %s, %s) != (%s, %s, %s, %s)"%(a.x, a.y, a.z, a.w, b.x, b.y, b.z, b.w)) + self.failIf((a.y-b.y)>eps, "(%s, %s, %s, %s) != (%s, %s, %s, %s)"%(a.x, a.y, a.z, a.w, b.x, b.y, b.z, b.w)) + self.failIf((a.z-b.z)>eps, "(%s, %s, %s, %s) != (%s, %s, %s, %s)"%(a.x, a.y, a.z, a.w, b.x, b.y, b.z, b.w)) + self.failIf((a.w-b.w)>eps, "(%s, %s, %s, %s) != (%s, %s, %s, %s)"%(a.x, a.y, a.z, a.w, b.x, b.y, b.z, b.w)) Property changes on: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatPoint.py ___________________________________________________________________ Name: svn:eol-style + native Added: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatVector.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatVector.py (rev 0) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatVector.py 2006-09-29 16:59:06 UTC (rev 65) @@ -0,0 +1,255 @@ +# ***** BEGIN LICENSE BLOCK ***** +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Python Computer Graphics Kit. +# +# The Initial Developer of the Original Code is Matthias Baas. +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# ***** END LICENSE BLOCK ***** + +# MVector test + +import unittest +from maya.api import * +import math + +class TestMFloatVector(unittest.TestCase): + + def testConstructors(self): + """Test the MFloatVector constructors. + + This also tests the component access via the x, y and z attributes. + """ + + # Standard constructor + v = MFloatVector() + self.assertEqual(v.x, 0) + self.assertEqual(v.y, 0) + self.assertEqual(v.z, 0) + + # 3 args + v = MFloatVector(1.2, -2, 3.7) + self.assertAlmostEqual(v.x, 1.2, 4) + self.assertAlmostEqual(v.y, -2, 4) + self.assertAlmostEqual(v.z, 3.7, 4) + + # MVector arg + dv = MVector(0.6, 0.7, 0.8) + v = MFloatVector(dv) + self.assertAlmostEqual(v.x, dv.x, 4) + self.assertAlmostEqual(v.y, dv.y, 4) + self.assertAlmostEqual(v.z, dv.z, 4) + + # MPoint arg + p = MPoint(0.6, 0.7, 0.8, 5) + v = MFloatVector(p) + self.assertAlmostEqual(v.x, p.x, 4) + self.assertAlmostEqual(v.y, p.y, 4) + self.assertAlmostEqual(v.z, p.z, 4) + + # Copy constructor + w = MFloatVector(0.6, 0.7, 0.8) + v = MFloatVector(w) + self.assertEqual(v.x, w.x) + self.assertEqual(v.y, w.y) + self.assertEqual(v.z, w.z) + + # 2 args + v = MFloatVector(4.3, 1.1) + self.assertAlmostEqual(v.x, 4.3, 4) + self.assertAlmostEqual(v.y, 1.1, 4) + self.assertAlmostEqual(v.z, 0, 4) + + # A sequence arg + v = MFloatVector([1.5,0.3,0.5]) + self.assertAlmostEqual(v.x, 1.5, 4) + self.assertAlmostEqual(v.y, 0.3, 4) + self.assertAlmostEqual(v.z, 0.5, 4) + + def testStaticVecs(self): + """Test the MFloatVector static members.""" + + self.assertVecEqual(MFloatVector.zero, MFloatVector(0,0,0)) + self.assertVecEqual(MFloatVector.one, MFloatVector(1,1,1)) + self.assertVecEqual(MFloatVector.xAxis, MFloatVector(1,0,0)) + self.assertVecEqual(MFloatVector.yAxis, MFloatVector(0,1,0)) + self.assertVecEqual(MFloatVector.zAxis, MFloatVector(0,0,1)) + self.assertVecEqual(MFloatVector.xNegAxis, MFloatVector(-1,0,0)) + self.assertVecEqual(MFloatVector.yNegAxis, MFloatVector(0,-1,0)) + self.assertVecEqual(MFloatVector.zNegAxis, MFloatVector(0,0,-1)) + + def testComparisonOps(self): + """Test the MFloatVector == and != operators. + """ + + v = MFloatVector(1.2, -0.5, 1.1) + w = MFloatVector(1.2, -0.5, 1.1) + u = MFloatVector(1.2, 0.25, 1.1) + + self.assertEqual(v==w, True) + self.assertEqual(v!=w, False) + self.assertEqual(v==u, False) + self.assertEqual(v!=u, True) + + def testIndexOp(self): + """Test the MFloatVector index operators. + """ + + v = MFloatVector(1.5, 0.2, 0.5) + self.assertEqual(v[0], v.x) + self.assertEqual(v[1], v.y) + self.assertEqual(v[2], v.z) + + v[0] = 2.0 + v[1] = 0.5 + v[2] = -1 + self.assertEqual(v[0], 2.0) + self.assertEqual(v[1], 0.5) + self.assertEqual(v[2], -1.0) + +# v = MFloatVector(1.5, 0.2, 0.5) +# self.assertEqual(v(0), v.x) +# self.assertEqual(v(1), v.y) +# self.assertEqual(v(2), v.z) + + def testCrossProduct(self): + """Test the MFloatVector cross product operator ^. + """ + a = MFloatVector(1, 0.5, -1.8) + b = MFloatVector(-0.3, 0.75, 0.5) + c = a^b + + self.assertVecEqual(c, MFloatVector(1.6, 0.04, 0.9)) + + def testDiv(self): + """Test the MFloatVector / operator. + """ + a = MFloatVector(2, 4, 6) + c = a/2.0 + self.assertVecEqual(c, MFloatVector(1,2,3)) + + def testiDiv(self): + """Test the MFloatVector inline / operator. + """ + a = MFloatVector(1.5, 2, 3) + a /= 2.0 + self.assertVecEqual(a, MFloatVector(0.75,1,1.5)) + + def testiMul(self): + """Test the MFloatVector inline * operator.""" + a = MFloatVector(1.5, 2, 3) + a*=2 + self.assertVecEqual(a, MFloatVector(3,4,6)) + + def testMul(self): + """Test the MFloatVector * operator.""" + + a = MFloatVector(-1, 2.5, 3) + c = 2*a + self.assertVecEqual(c, MFloatVector(-2,5,6)) + + c = a*2 + self.assertVecEqual(c, MFloatVector(-2,5,6)) + + c = a*2L + self.assertVecEqual(c, MFloatVector(-2,5,6)) + + c = 2.0*a + self.assertVecEqual(c, MFloatVector(-2,5,6)) + + c = a*2.0 + self.assertVecEqual(c, MFloatVector(-2,5,6)) + + b = MFloatVector(2,4,-1) + c = a*b + self.assertEqual(c, 5.0) + + M = MFloatMatrix() + c = M*a + c = a*M + + def testAdd(self): + """Test the MFloatVector + operator.""" + a = MFloatVector(1.5, 2, 3) + b = MFloatVector(2, -1.2, 7) + c = a+b + self.assertVecEqual(c, MFloatVector(3.5,0.8,10)) + + def testiAdd(self): + """Test the MFloatVector inline + operator.""" + a = MFloatVector(1.5, 2, 3) + b = MFloatVector(2, -1.2, 7) + a += b + self.assertVecEqual(a, MFloatVector(3.5,0.8,10)) + + def testSub(self): + """Test the MFloatVector - operator.""" + a = MFloatVector(1.5, 2, 3) + b = MFloatVector(2, -1.2, 7) + c = a-b + self.assertVecEqual(c, MFloatVector(-0.5,3.2,-4)) + + a = MFloatVector(1,-2,3) + c = -a + self.assertVecEqual(c, MFloatVector(-1,2,-3)) + + def testGet(self): + """Test the MFloatVector get() method. + """ + a = MFloatVector(1,2,3) + c = a.get() + self.assertEqual(len(c), 3) + self.assertEqual(c[0], a.x) + self.assertEqual(c[1], a.y) + self.assertEqual(c[2], a.z) + + def testLength(self): + """Test the MFloatVector length() method.""" + a = MFloatVector(1, 2, 3) + c = a.length() + self.assertEqual(c, math.sqrt(14)) + + def testNormalize(self): + """Test the MFloatVector normalize() and normal() methods.""" + a = MFloatVector(1,0.5,-1.8) + + c = a.normal() + self.assertAlmostEqual(c.length(), 1.0, 4) + + a.normalize() + self.assertAlmostEqual(a.length(), 1.0, 4) + + def testAngle(self): + """Test the MFloatVector angle() method.""" + a = MFloatVector(1,0,0) + b = MFloatVector(0,1,0) + self.assertAlmostEqual(a.angle(b), math.pi/2, 4) + + def testIsParallel(self): + """Test the MFloatVector isParallel() method.""" + a = MFloatVector(1, 2, 3) + b = MFloatVector(2, 4, 6) + c = MFloatVector(1, 4, 6) + self.assertEqual(a.isParallel(b), True) + self.assertEqual(a.isParallel(c), False) + + # Helper method to compare vectors + + def assertVecEqual(self, a, b): + """Compare MFloatVectors a and b. + """ + eps = 1E-4 + self.failIf((a-b).length()>eps, "(%s, %s, %s) != (%s, %s, %s)"%(a.x, a.y, a.z, b.x, b.y, b.z)) Property changes on: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MFloatVector.py ___________________________________________________________________ Name: svn:eol-style + native Added: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObject.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObject.py (rev 0) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObject.py 2006-09-29 16:59:06 UTC (rev 65) @@ -0,0 +1,77 @@ +# ***** BEGIN LICENSE BLOCK ***** +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Python Computer Graphics Kit. +# +# The Initial Developer of the Original Code is Matthias Baas. +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# ***** END LICENSE BLOCK ***** + +# MObject test + +import unittest +from maya.api import * + +class TestMObject(unittest.TestCase): + """Test the MObject class. + """ + + def testConstructors(self): + """Test the MObject constructors. + """ + # Standard constructor + obj = MObject() + self.assertEqual(obj.isNull(), True) + + # Copy constructor + obj2 = MObject(obj) + + def testStaticVecs(self): + """Test the MObject static members.""" + + self.assertEqual(MObject.kNullObj, MObject()) + + def testMethods(self): + """Test the MObject methods. + """ + + # Get the default perspective camera (transform node) so that we + # have a valid MObject to do some tests... + sel = MSelectionList() + MGlobal.getSelectionListByName("persp", sel) + if sel.length()!=1: + raise ValueError, "Camera 'persp' not found." + persp = MObject() + sel.getDependNode(0, persp) + + self.assertEqual(persp.isNull(), False) + self.assertEqual(persp.hasFn(MFn.kTransform), True) + self.assertEqual(persp.hasFn(MFn.kMesh), False) + self.assertEqual(persp.apiType(), MFn.kTransform) + self.assertEqual(persp.apiTypeStr(), "kTransform") + + persp2 = MObject(persp) + self.assertEqual(persp, persp2) + + # Get another valid MObject (top camera) + sel = MSelectionList() + MGlobal.getSelectionListByName("top", sel) + if sel.length()!=1: + raise ValueError, "Camera 'top' not found." + top = MObject() + sel.getDependNode(0, top) + + self.assertNotEqual(persp, top) Property changes on: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObject.py ___________________________________________________________________ Name: svn:eol-style + native Modified: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObjectArray.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObjectArray.py 2006-09-29 16:58:20 UTC (rev 64) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MObjectArray.py 2006-09-29 16:59:06 UTC (rev 65) @@ -54,6 +54,13 @@ b = MObjectArray(a) self.assertEqual(a.length(), 2) + def testIteration(self): + """Test MObjectArray iteration. + """ + a = MObjectArray(5) + for obj in a: + self.assertEqual(type(obj), MObject) + def testIndexOperator(self): """Test the MObjectArray index operator. """ Modified: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPoint.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPoint.py 2006-09-29 16:58:20 UTC (rev 64) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPoint.py 2006-09-29 16:59:06 UTC (rev 65) @@ -127,6 +127,15 @@ self.assertEqual(p[2], p.z) self.assertEqual(p[3], p.w) + p[0] = 0.5 + p[1] = 0.6 + p[2] = 0.7 + p[3] = 0.8 + self.assertEqual(p.x, 0.5) + self.assertEqual(p.y, 0.6) + self.assertEqual(p.z, 0.7) + self.assertEqual(p.w, 0.8) + def testDiv(self): """Test the MPoint / operator. """ Modified: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPointArray.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPointArray.py 2006-09-29 16:58:20 UTC (rev 64) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MPointArray.py 2006-09-29 16:59:06 UTC (rev 65) @@ -61,6 +61,13 @@ self.assertPointEqual(pnts2[1], MPoint(4,5,6,1)) self.assertPointEqual(pnts2[2], MPoint(7,8,9,1)) + def testIteration(self): + """Test MPointArray iteration. + """ + a = MPointArray(5) + for p in a: + self.assertEqual(type(p), MPoint) + def testIndexOperator(self): """Test the MPointArray index operator. """ @@ -76,7 +83,12 @@ pnts[0] = MPoint(4,5,6) self.assertPointEqual(pnts[0], MPoint(4,5,6)) - + + # For some reason the conversion from a sequence to MPoint doesn't + # work here...?! +# pnts[0] = (1,2,3) +# self.assertPointEqual(pnts[0], MPoint(1,2,3)) + def testSet(self): """Test the MPointArray set() method. """ @@ -126,6 +138,9 @@ pnts.insert(MPoint(), 1) self.assertEqual(pnts.length(), 5) + pnts.insert((1,2,3), 1) + self.assertEqual(pnts.length(), 6) + def testAppend(self): """Test the MPointArray append() method. """ Modified: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MString.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MString.py 2006-09-29 16:58:20 UTC (rev 64) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MString.py 2006-09-29 16:59:06 UTC (rev 65) @@ -28,5 +28,7 @@ class TestMString(unittest.TestCase): def testStandardConstructor(self): + """Test the MString constructors. + """ s = MString("Spam") self.assertEqual(s.asChar(), "Spam") Modified: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVector.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVector.py 2006-09-29 16:58:20 UTC (rev 64) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVector.py 2006-09-29 16:59:06 UTC (rev 65) @@ -124,6 +124,13 @@ self.assertEqual(v[1], v.y) self.assertEqual(v[2], v.z) + v[0] = 2.0 + v[1] = 0.5 + v[2] = -1 + self.assertEqual(v[0], 2.0) + self.assertEqual(v[1], 0.5) + self.assertEqual(v[2], -1.0) + # v = MVector(1.5, 0.2, 0.5) # self.assertEqual(v(0), v.x) # self.assertEqual(v(1), v.y) @@ -187,6 +194,10 @@ c = a*b self.assertEqual(c, 5.0) + M = MMatrix() + c = M*a + c = a*M + def testAdd(self): """Test the MVector + operator.""" a = MVector(1.5, 2, 3) @@ -246,8 +257,13 @@ def testRotateBy(self): """Test the MVector rotateBy() method.""" a = MVector(1,0,0) - print a.rotateBy([0.2, 0.5, 0.7], MTransformationMatrix.RotationOrder.kXYZ) + a.rotateBy([0.2, 0.5, 0.7], MTransformationMatrix.RotationOrder.kXYZ) + def testAngle(self): + """Test the MVector angle() method.""" + a = MVector(1,0,0) + b = MVector(0,1,0) + self.assertEqual(a.angle(b), math.pi/2) def testIsParallel(self): """Test the MVector isParallel() method.""" Added: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVectorArray.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVectorArray.py (rev 0) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVectorArray.py 2006-09-29 16:59:06 UTC (rev 65) @@ -0,0 +1,199 @@ +# ***** BEGIN LICENSE BLOCK ***** +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Python Computer Graphics Kit. +# +# The Initial Developer of the Original Code is Matthias Baas. +# Portions created by the Initial Developer are Copyright (C) 2005 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# ***** END LICENSE BLOCK ***** + +# MVectorArray test + +import unittest +from maya.api import * +import maya._api +MVector.__repr__ = MVector.__str__ + +class TestMVectorArray(unittest.TestCase): + + def testConstructors(self): + """Test the MVectorArray constructors. + """ + # Standard constructor + vecs = MVectorArray() + self.assertEqual(vecs.length(), 0) + + # Provide an initial size + vecs = MVectorArray(8) + self.assertEqual(vecs.length(), 8) + + # Provide an initial size and default initializer + vecs = MVectorArray(6, MVector(1,2,3)) + self.assertEqual(vecs.length(), 6) + for i in range(vecs.length()): + self.assertVecEqual(vecs[i], MVector(1,2,3)) + + # Provide a list of MVectors + vecs = MVectorArray([MVector(1,2,3), MVector(4,5,6), MVector(7,8,9)]) + self.assertEqual(vecs.length(), 3) + self.assertVecEqual(vecs[0], MVector(1,2,3)) + self.assertVecEqual(vecs[1], MVector(4,5,6)) + self.assertVecEqual(vecs[2], MVector(7,8,9)) + + # Provide a list of tuples +# vecs = MVectorArray([(1,2,3), (4,5,6), (7,8,9)]) +# self.assertEqual(vecs.length(), 3) +# self.assertVecEqual(vecs[0], MVector(1,2,3)) +# self.assertVecEqual(vecs[1], MVector(4,5,6)) +# self.assertVecEqual(vecs[2], MVector(7,8,9)) + + # Copy constructor + vecs2 = MVectorArray(vecs) + self.assertEqual(vecs2.length(), 3) + self.assertVecEqual(vecs2[0], MVector(1,2,3)) + self.assertVecEqual(vecs2[1], MVector(4,5,6)) + self.assertVecEqual(vecs2[2], MVector(7,8,9)) + + def testIteration(self): + """Test MVectorArray iteration. + """ + a = MVectorArray(5) + for v in a: + self.assertEqual(type(v), maya._api.MVector) + + def testIndexOperator(self): + """Test the MVectorArray index operator. + """ + + vecs = MVectorArray(3) + vecs[1].x = 1 + vecs[1].y = 2 + vecs[1].z = 3 + self.assertEqual(vecs[1].x, 1) + self.assertEqual(vecs[1].y, 2) + self.assertEqual(vecs[1].z, 3) + self.assertVecEqual(vecs[1], MVector(1,2,3)) + + vecs[0] = MVector(4,5,6) + self.assertVecEqual(vecs[0], MVector(4,5,6)) + + # For some reason the conversion from a sequence to MVector doesn't + # work here...?! +# vecs[0] = (1,2,3) +# self.assertVecEqual(vecs[0], MVector(1,2,3)) + + def testSet(self): + """Test the MVectorArray set() method. + """ + + vecs = MVectorArray(3) + vecs.set(MVector(1,2,3), 1) + self.assertVecEqual(vecs[1], MVector(1,2,3)) + + vecs.set([3,2,1], 2) + self.assertVecEqual(vecs[2], MVector(3,2,1)) + + def testLength(self): + """Test the MVectorArray length()/setLength() methods. + """ + + vecs = MVectorArray() + self.assertEqual(vecs.length(), 0) + + vecs.setLength(5) + self.assertEqual(vecs.length(), 5) + + vecs.setLength(3) + self.assertEqual(vecs.length(), 3) + + def testRemove(self): + """Test the MVectorArray remove() method. + """ + + vecs = MVectorArray(5) + + vecs.remove(2) + self.assertEqual(vecs.length(), 4) + + def testInsert(self): + """Test the MVectorArray insert() method. + """ + + vecs = MVectorArray(4) + + vecs.insert(MVector(), 1) + self.assertEqual(vecs.length(), 5) + + vecs.insert((1,2,3), 2) + self.assertEqual(vecs.length(), 6) + + def testAppend(self): + """Test the MVectorArray append() method. + """ + + vecs = MVectorArray(4) + + vecs.append(MVector()) + self.assertEqual(vecs.length(), 5) + + def testCopy(self): + """Test the MVectorArray copy() method. + """ + + src = MVectorArray(3) + src[0] = MVector(1,2,3) + src[1] = MVector(4,5,6) + src[2] = MVector(7,8,9) + + vecs = MVectorArray() + vecs.copy(src) + self.assertEqual(vecs.length(), 3) + self.assertVecEqual(vecs[0], MVector(1,2,3)) + self.assertVecEqual(vecs[1], MVector(4,5,6)) + self.assertVecEqual(vecs[2], MVector(7,8,9)) + + def testClear(self): + """Test the MVectorArray clear() method. + """ + + vecs = MVectorArray(4) + self.assertEqual(vecs.length(), 4) + vecs.clear() + self.assertEqual(vecs.length(), 0) + + def testGet(self): + """Test the MVectorArray get() method. + """ + + vecs = MVectorArray(3) + vecs[0] = MVector(1,2,3) + vecs[1] = MVector(4,5,6) + vecs[2] = MVector(7,8,9) + + v = vecs.get() + self.assertEqual(v, [(1.0,2.0,3.0), (4.0,5.0,6.0), (7.0,8.0,9.0)]) + + v = [] + vecs.get(v) + self.assertEqual(v, [(1.0,2.0,3.0), (4.0,5.0,6.0), (7.0,8.0,9.0)]) + + # Helper method to compare vectors + + def assertVecEqual(self, a, b): + """Compare MVectors a and b. + """ + eps = 1E-8 + self.failIf((a-b).length()>eps, "(%s, %s, %s) != (%s, %s, %s)"%(a.x, a.y, a.z, b.x, b.y, b.z)) Property changes on: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/MVectorArray.py ___________________________________________________________________ Name: svn:eol-style + native Modified: maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/__init__.py =================================================================== --- maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/__init__.py 2006-09-29 16:58:20 UTC (rev 64) +++ maya/trunk/maya_wrapper/maya/unittest/sdk_unittests/__init__.py 2006-09-29 16:59:06 UTC (rev 65) @@ -21,14 +21,18 @@ # ***** END LICENSE BLOCK ***** from MAngle import TestMAngle +from MBoundingBox import TestMBoundingBox from MColor import TestMColor from MDGMessage import TestMDGMessage from MFloatMatrix import TestMFloatMatrix +from MFloatPoint import TestMFloatPoint +from MFloatVector import TestMFloatVector from MFn import TestMFn from MFnBase import TestMFnBase from MGlobal import TestMGlobal from MImage import TestMImage from MMatrix import TestMMatrix +from MObject import TestMObject from MObjectArray import TestMObjectArray from MStatus import TestMStatus from MString import TestMString @@ -37,3 +41,4 @@ from MPointArray import TestMPointArray from MUserEventMessage import TestMUserEventMessage from MVector import TestMVector +from MVectorArray import TestMVectorArray This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |