Skip to content

Commit

Permalink
Add YogaConfig unit tests
Browse files Browse the repository at this point in the history
Summary:
- depends on #497
Closes #498

Reviewed By: emilsjolander

Differential Revision: D4796199

Pulled By: splhack

fbshipit-source-id: c63f23da11a719b36c0d49e954b29c0016cad8c7
  • Loading branch information
splhack authored and facebook-github-bot committed Apr 10, 2017
1 parent 8a45ed9 commit 3ea76f8
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<Compile Include="$(MSBuildThisFileDirectory)YGMinMaxDimensionTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)YGPaddingTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)YGRoundingTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)YogaConfigTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)YogaNodeSpacingTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)YogaNodeTest.cs" />
</ItemGroup>
Expand Down
136 changes: 136 additions & 0 deletions csharp/tests/Facebook.Yoga/YogaConfigTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
/**
* 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;
}
}
}
2 changes: 1 addition & 1 deletion csharp/tests/Facebook.Yoga/YogaNodeTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ public void TestCopyConstructor()
Assert.AreEqual(90.Pt(), node4.MaxHeight);
}

private void ForceGC()
public static void ForceGC()
{
GC.Collect(GC.MaxGeneration);
GC.WaitForPendingFinalizers();
Expand Down

0 comments on commit 3ea76f8

Please sign in to comment.