public void SubdividingGroupWithTooFewChildren() { var s1 = new shape.Sphere(transform.Translation(-2, 0, 0)); var s2 = new shape.Sphere(transform.Translation(2, 1, 0)); var s3 = new shape.Sphere(transform.Translation(2, -1, 4)); var subgroup = new shape.Group(new List <shape.Shape>() { s1, s2, s3 }); var s4 = new shape.Sphere(); var g = new shape.Group(new List <shape.Shape>() { subgroup, s4 }); g.Divide(3); Assert.Equal(subgroup, g[0]); Assert.Equal(s4, g[1]); var sg = (g[0] as shape.Group); Assert.Equal(2, sg.Count()); Assert.IsType <shape.Group>(sg[0]); Assert.Single((sg[0] as shape.Group).Children); Assert.Equal(s1, (sg[0] as shape.Group)[0]); Assert.IsType <shape.Group>(sg[1]); Assert.Equal(2, (sg[1] as shape.Group).Count()); Assert.Equal(new List <shape.Shape>() { s2, s3 }, (sg[1] as shape.Group).Children); }
public void SubdividingGroupPartitionsItsChildren() { var s1 = new shape.Sphere(transform.Translation(-2, -2, 0)); var s2 = new shape.Sphere(transform.Translation(-2, 2, 0)); var s3 = new shape.Sphere(transform.Scaling(4, 4, 4)); var g = new shape.Group(new List <shape.Shape>() { s1, s2, s3 }); g.Divide(1); Assert.Equal(s3, g[0]); var subgroup = g[1]; Assert.IsType <shape.Group>(subgroup); var sg = subgroup as shape.Group; Assert.Equal(2, sg.Count()); Assert.IsType <shape.Group>(sg[0]); Assert.Single((sg[0] as shape.Group).Children); Assert.Equal(s1, (sg[0] as shape.Group)[0]); Assert.IsType <shape.Group>(sg[1]); Assert.Single((sg[1] as shape.Group).Children); Assert.Equal(s2, (sg[1] as shape.Group)[0]); }