Files
dungeons/Assets/Plugins/Zenject/OptionalExtras/UnitTests/Editor/Other/TestAllocs.cs

63 lines
1.6 KiB
C#

// In order to run this, install dotMemoryPeek through nuget and then change this to 1
#if false
using System;
using System.Diagnostics;
using JetBrains.dotMemoryUnit;
using ModestTree;
using NUnit.Framework;
using Assert=ModestTree.Assert;
using System.Linq;
namespace Zenject.Tests.Other
{
[TestFixture]
public class TestAllocs : ZenjectUnitTestFixture
{
interface IFoo
{
}
public class Foo1 : IFoo
{
}
public class Foo2 : IFoo
{
}
[Test]
[DotMemoryUnit(CollectAllocations=true)]
public void TryStuff()
{
Container.Bind<IFoo>().To<Foo1>().AsSingle();
Container.TryResolve<IFoo>();
Log.Info("Starting memory check");
var point1 = dotMemory.Check();
Container.TryResolve<IFoo>();
dotMemory.Check(memory =>
{
var traffic = memory.GetTrafficFrom(point1).Where(x => x.Namespace.Like("Zenject"));
var bytesAllocated = traffic.AllocatedMemory.SizeInBytes;
if (bytesAllocated != 0)
{
Log.Info("Found unnecessary memory allocations ({0} kb) in Container.Resolve. Allocated Types: \n{1}",
(float)bytesAllocated / 1024f, traffic.GroupByType().OrderByDescending(x => x.AllocatedMemoryInfo.SizeInBytes)
.Select(x => "{0} bytes: ({1})".Fmt(x.AllocatedMemoryInfo.SizeInBytes, x.Type.PrettyName())).Join("\n"));
}
});
Log.Info("Done memory check");
}
}
}
#endif