def test_get_mass(self): chunk = Chunk() self.assertEquals(chunk.get_mass(), 0.0, "bad initial mass") shard1 = Disc(gold, 5) shard2 = Block(gold, self.unitsquare) chunk.shards = [shard1, shard2] self.assertEquals(chunk.get_mass(), (25 * pi + 1) * gold.density, "bad mass")
def test_get_moment(self): chunk = Chunk() self.assertEquals(chunk.get_moment(), 0.0, "bad initial moment") shard1 = Disc(gold, 2, (10, 20)) shard2 = Block(gold, self.unitsquare, (100, 200)) chunk.shards = [shard1, shard2] expected = shard1.get_moment() + shard2.get_moment() self.assertEquals(chunk.get_moment(), expected, "bad moment")
def test_offset_shards(self): chunk = Chunk() shard1 = Disc(gold, 5, (10, 20)) shard2 = Block(gold, self.unitsquare, (30, 40), center=True) chunk.shards = [shard1, shard2] chunk._offset_shards((+2, -3)) offset1 = chunk.shards[0].get_centroid() self.assertEquals(offset1, (12, 17), "bad shard1 offset") offset2 = chunk.shards[1].get_centroid() self.assertEquals(offset2, (32, 37), "bad shard2 offset")
def test_center_of_gravity(self): chunk = Chunk() self.assertEquals(chunk._center_of_gravity(), (0, 0), "bad COG0") shard1 = Disc(gold, 2, (10, 20)) chunk = Chunk() chunk.shards = (shard1,) cog = chunk._center_of_gravity() self.assertAlmostEquals(cog[0], 10, msg="bad COG1 x") self.assertAlmostEquals(cog[1], 20, msg="bad COG1 y") verts = [(99, 49), (99, 51), (101, 51), (101, 49)] shard2 = Block(gold, verts) chunk.shards = (shard2,) self.assertEquals(chunk._center_of_gravity(), (100, 50), "bad COG2") chunk.shards = (shard1, shard2) totalMass = shard1.mass + shard2.mass x = (10 * shard1.mass + 100 * shard2.mass) / totalMass y = (20 * shard1.mass + 50 * shard2.mass) / totalMass self.assertEquals(chunk._center_of_gravity(), (x, y), "bad COG3")