Summary: - depends on #497 Closes https://github.com/facebook/yoga/pull/498 Reviewed By: emilsjolander Differential Revision: D4796199 Pulled By: splhack fbshipit-source-id: c63f23da11a719b36c0d49e954b29c0016cad8c7
137 lines
4.5 KiB
C#
137 lines
4.5 KiB
C#
/**
|
|
* Copyright (c) 2014-present, Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
using NUnit.Framework;
|
|
using System;
|
|
|
|
/**
|
|
* Tests for {@link YogaConfig}.
|
|
*/
|
|
namespace Facebook.Yoga
|
|
{
|
|
[TestFixture]
|
|
public class YogaConfigTest
|
|
{
|
|
[Test]
|
|
public void TestUseWebDefaults()
|
|
{
|
|
YogaNode node0 = new YogaNode(new YogaConfig{UseWebDefaults = true});
|
|
Assert.AreEqual(YogaFlexDirection.Row, node0.FlexDirection);
|
|
|
|
node0.Reset();
|
|
Assert.AreEqual(YogaFlexDirection.Row, node0.FlexDirection);
|
|
|
|
YogaConfig config = new YogaConfig();
|
|
config.UseWebDefaults = true;
|
|
YogaNode node1 = new YogaNode(config);
|
|
Assert.AreEqual(YogaFlexDirection.Row, node1.FlexDirection);
|
|
|
|
node1.Reset();
|
|
Assert.AreEqual(YogaFlexDirection.Row, node1.FlexDirection);
|
|
}
|
|
|
|
[Test]
|
|
public void TestDefaultConfig()
|
|
{
|
|
YogaNode node0 = new YogaNode();
|
|
Assert.AreEqual(YogaFlexDirection.Column, node0.FlexDirection);
|
|
|
|
YogaNode node1 = new YogaNode(new YogaConfig());
|
|
Assert.AreEqual(YogaFlexDirection.Column, node1.FlexDirection);
|
|
}
|
|
|
|
[Test]
|
|
public void TestCopyConstructor()
|
|
{
|
|
YogaNode srcNode = new YogaNode(new YogaConfig{UseWebDefaults = true});
|
|
YogaNode node0 = new YogaNode(srcNode);
|
|
Assert.AreEqual(YogaFlexDirection.Row, node0.FlexDirection);
|
|
|
|
node0.FlexDirection = YogaFlexDirection.Column;
|
|
Assert.AreEqual(YogaFlexDirection.Column, node0.FlexDirection);
|
|
|
|
node0.Reset();
|
|
Assert.AreEqual(YogaFlexDirection.Row, node0.FlexDirection);
|
|
|
|
YogaNode node1 = new YogaNode(srcNode)
|
|
{
|
|
FlexDirection = YogaFlexDirection.Column
|
|
};
|
|
Assert.AreEqual(YogaFlexDirection.Column, node1.FlexDirection);
|
|
|
|
node1.Reset();
|
|
Assert.AreEqual(YogaFlexDirection.Row, node1.FlexDirection);
|
|
}
|
|
|
|
public static void ForceGC()
|
|
{
|
|
YogaNodeTest.ForceGC();
|
|
}
|
|
|
|
[Test]
|
|
public void TestDestructor()
|
|
{
|
|
ForceGC();
|
|
int instanceCount = YogaConfig.GetInstanceCount();
|
|
TestDestructorForGC(instanceCount);
|
|
ForceGC();
|
|
Assert.AreEqual(instanceCount, YogaConfig.GetInstanceCount());
|
|
}
|
|
|
|
private void TestDestructorForGC(int instanceCount)
|
|
{
|
|
YogaConfig config = new YogaConfig();
|
|
Assert.IsNotNull(config);
|
|
Assert.AreEqual(instanceCount + 1, YogaConfig.GetInstanceCount());
|
|
config = null;
|
|
}
|
|
|
|
[Test]
|
|
public void TestRetainConfig()
|
|
{
|
|
ForceGC();
|
|
int nodeInstanceCount = YogaNode.GetInstanceCount();
|
|
int configInstanceCount = YogaConfig.GetInstanceCount();
|
|
TestRetainConfigForGC(nodeInstanceCount, configInstanceCount);
|
|
ForceGC();
|
|
|
|
Assert.AreEqual(nodeInstanceCount, YogaNode.GetInstanceCount());
|
|
Assert.AreEqual(configInstanceCount, YogaConfig.GetInstanceCount());
|
|
}
|
|
|
|
private void TestRetainConfigForGC(int nodeInstanceCount, int configInstanceCount)
|
|
{
|
|
ForceGC();
|
|
Assert.AreEqual(nodeInstanceCount, YogaNode.GetInstanceCount());
|
|
Assert.AreEqual(configInstanceCount, YogaConfig.GetInstanceCount());
|
|
YogaNode node = TestRetainConfigForGC2(nodeInstanceCount, configInstanceCount);
|
|
ForceGC();
|
|
Assert.IsNotNull(node);
|
|
Assert.AreEqual(configInstanceCount + 1, YogaConfig.GetInstanceCount());
|
|
Assert.AreEqual(nodeInstanceCount + 1, YogaNode.GetInstanceCount());
|
|
node = null;
|
|
}
|
|
|
|
private YogaNode TestRetainConfigForGC2(int nodeInstanceCount, int configInstanceCount)
|
|
{
|
|
YogaConfig config = new YogaConfig();
|
|
Assert.IsNotNull(config);
|
|
Assert.AreEqual(configInstanceCount + 1, YogaConfig.GetInstanceCount());
|
|
|
|
YogaNode node = new YogaNode(config);
|
|
Assert.IsNotNull(node);
|
|
Assert.AreEqual(nodeInstanceCount + 1, YogaNode.GetInstanceCount());
|
|
|
|
config = null;
|
|
|
|
return node;
|
|
}
|
|
}
|
|
}
|