Assert.AreEqual(false, resultBool, "...and That value must be equal what we added");
}
}
+
+ [Test]
+ [Category("P1")]
+ [Description("internal API test in Ubuntu, Container.DisposeRecursively")]
+ [Property("SPEC", "Tizen.NUI.Common.Container.DisposeRecursively M")]
+ [Property("SPEC_URL", "-")]
+ [Property("CRITERIA", "MR")]
+ [Property("AUTHOR", "eunkiki.hong@samsung.com")]
+ public void DisposeRecursively_VALUE()
+ {
+ /* TEST CODE */
+ View testParent = new View();
+ View testChildL0 = new View();
+ View testChildL1 = new View();
+
+ testParent.Add(testChildL0);
+ testChildL0.Add(testChildL1);
+
+ Assert.AreEqual(false, testParent.Disposed, "View should not disposed yet.");
+ Assert.AreEqual(false, testChildL0.Disposed, "View should not disposed yet.");
+ Assert.AreEqual(false, testChildL1.Disposed, "View should not disposed yet.");
+
+ testParent.DisposeRecursively();
+
+ Assert.AreEqual(true, testParent.Disposed, "View should be disposed now.");
+ Assert.AreEqual(true, testChildL0.Disposed, "View should be disposed now.");
+ Assert.AreEqual(true, testChildL1.Disposed, "View should be disposed now.");
+ }
}
}
// So we need to create CustomView whitch CustomViewBehavior.DisableSizeNegotiation.
public Custom3DView() : base("Custom3DView", CustomViewBehaviour.DisableSizeNegotiation)
{
+ // Make this object use centered.
+ PositionUsesPivotPoint = true;
+ ParentOrigin = Position.ParentOriginCenter;
+ PivotPoint = Position.PivotPointCenter;
+ }
+
+ public override void OnInitialize()
+ {
}
}
private const int AutoDisposedObjectCount = 10;
private const int ManualDisposedObjectCount = 10;
+ private const int RecuvelyDisposedObjectCount = 10;
private Window win;
private View root;
private Timer timer;
private bool toggle = false;
private string resource;
private List<Custom3DView> views;
+ private List<Custom3DView> depthViews; // List of tree-formed views. 0 indexes view is root.
private Animation rotateAnimation;
public void Activate()
root = new View()
{
Name = "root",
- Size = new Size(10, 10),
- BackgroundColor = Color.Blue,
+ WidthResizePolicy = ResizePolicyType.FillToParent,
+ HeightResizePolicy = ResizePolicyType.FillToParent,
};
win.Add(root);
views = new List<Custom3DView>();
+ depthViews = new List<Custom3DView>();
rotateAnimation = new Animation(1500); //1.5s
AddManyViews();
toggle = !toggle;
if (toggle)
{
+ Tizen.Log.Error("NUI", $"View Creation Start\n");
AddManyViews();
+ Tizen.Log.Error("NUI", $"View Creation Finish\n");
}
else
{
+ Tizen.Log.Error("NUI", $"Manual Dispose Start\n");
RemoveAllViews();
+ Tizen.Log.Error("NUI", $"Manual Dispose Finish\n");
FullGC();
}
return true;
{
Size = new Size(viewSize, viewSize, viewSize),
Position = new Position(
- rand.Next(10, win.WindowSize.Width - 10),
- rand.Next(10, win.WindowSize.Height - 10),
+ rand.Next(10, win.WindowSize.Width - 10) - win.WindowSize.Width / 2,
+ rand.Next(10, win.WindowSize.Height - 10) - win.WindowSize.Height / 2,
rand.Next(-3 * viewSize, 3 * viewSize)
),
+ Name = "Auto_" + i.ToString(),
};
root.Add(view);
{
Size = new Size(viewSize, viewSize, viewSize),
Position = new Position(
- rand.Next(10, win.WindowSize.Width - 10),
- rand.Next(10, win.WindowSize.Height - 10),
+ rand.Next(10, win.WindowSize.Width - 10) - win.WindowSize.Width / 2,
+ rand.Next(10, win.WindowSize.Height - 10) - win.WindowSize.Height / 2,
rand.Next(-3 * viewSize, 3 * viewSize)
),
+ Name = "Manual_" + i.ToString(),
};
root.Add(view);
views.Add(view);
rotateAnimation.AnimateBy(view, "Orientation", new Rotation(new Radian(new Degree(-360.0f)), Vector3.YAxis));
}
+
+ for (int i = 0; i < RecuvelyDisposedObjectCount; i++)
+ {
+ int viewSize = 150;
+ var view = new Custom3DView()
+ {
+ // Note that we need to disconnect inherit to make this view shows well.
+ InheritPosition = false,
+ InheritOrientation = false,
+
+ Size = new Size(viewSize, viewSize, viewSize),
+
+ Position = new Position(
+ rand.Next(10, win.WindowSize.Width - 10) - win.WindowSize.Width / 2,
+ rand.Next(10, win.WindowSize.Height - 10) - win.WindowSize.Height / 2,
+ rand.Next(-3 * viewSize, 3 * viewSize)
+ ),
+ Name = "Recursive_" + i.ToString(),
+ };
+
+ // Add view recursively.
+ if(i == 0)
+ {
+ root.Add(view);
+ }
+ else
+ {
+ int parentIndex = rand.Next(i);
+ var parent = depthViews[parentIndex];
+ parent.Add(view);
+ }
+ depthViews.Add(view);
+
+ PixelData pixelData = PixelBuffer.Convert(ImageLoader.LoadImageFromFile(
+ resource + "/images/PaletteTest/rock.jpg",
+ new Size2D(),
+ FittingModeType.ScaleToFill
+ ));
+ Texture texture = new Texture(
+ TextureType.TEXTURE_2D,
+ pixelData.GetPixelFormat(),
+ pixelData.GetWidth(),
+ pixelData.GetHeight()
+ );
+ texture.Upload(pixelData);
+ TextureSet textureSet = new TextureSet();
+ textureSet.SetTexture(0u, texture);
+ Renderer renderer = new Renderer(GenerateGeometry(), new Shader(VERTEX_SHADER, FRAGMENT_SHADER));
+ renderer.SetTextures(textureSet);
+ view.AddRenderer(renderer);
+
+ //rotateAnimation.AnimateBy(view, "Orientation", new Rotation(new Radian(new Degree(360.0f)), Vector3.ZAxis));
+ }
rotateAnimation.Looping = true;
rotateAnimation.Play();
}
renderer.Dispose();
view.Dispose();
}
+ if(depthViews?.Count > 0)
+ {
+ depthViews[0].DisposeRecursively();
+ }
+
views.Clear();
+ depthViews.Clear();
rotateAnimation.Clear();
}
rotateAnimation?.Dispose();
root.Unparent();
root.Dispose();
+
+ // Revert default layer behavior as LayerUI
+ win.GetDefaultLayer().Behavior = Layer.LayerBehavior.LayerUI;
}
}
}