|
|
|
|
|
|
using System.Collections; |
|
|
|
using NUnit.Framework; |
|
|
|
using Unity.Entities; |
|
|
|
using UnityEngine; |
|
|
|
using UnityEngine.Perception.GroundTruth; |
|
|
|
using UnityEngine.TestTools; |
|
|
|
|
|
|
//allow label to be registered
|
|
|
|
yield return null; |
|
|
|
Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(labeledPlane.GetComponent<Labeling>().instanceId, out var labelEntry, out var index)); |
|
|
|
Assert.AreEqual(-1, index); |
|
|
|
Assert.AreEqual(default(IdLabelEntry), labelEntry); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[UnityTest] |
|
|
|
public IEnumerator TryGet_ReturnsFalse_ForNonMatchingLabel_WhenAllObjectsAreDestroyedAndNewOnesAreCreated() |
|
|
|
{ |
|
|
|
//only way to guarantee registration order is to run frames.
|
|
|
|
|
|
|
|
var labeledPlane = TestHelper.CreateLabeledPlane(label: "foo"); |
|
|
|
|
|
|
|
var config = ScriptableObject.CreateInstance<IdLabelConfig>(); |
|
|
|
config.Init(new[] |
|
|
|
{ |
|
|
|
new IdLabelEntry() |
|
|
|
{ |
|
|
|
id = 1, |
|
|
|
label = "foo" |
|
|
|
}, |
|
|
|
}); |
|
|
|
|
|
|
|
using (var cache = new LabelEntryMatchCache(config)) |
|
|
|
{ |
|
|
|
//allow label to be registered
|
|
|
|
yield return null; |
|
|
|
|
|
|
|
//delete all labeled objects and run a frame so that instance ids of labeled entities reset
|
|
|
|
DestroyTestObject(labeledPlane); |
|
|
|
|
|
|
|
yield return null; |
|
|
|
|
|
|
|
//this new object has a label that is not included in our label config
|
|
|
|
var labeledPlane2 = TestHelper.CreateLabeledPlane(label: "bar"); |
|
|
|
AddTestObjectForCleanup(labeledPlane2); |
|
|
|
|
|
|
|
//let labeledPlane2 be assigned a recycled instance id (1) previously belonging to labeledPlane
|
|
|
|
yield return null; |
|
|
|
|
|
|
|
Assert.IsFalse(cache.TryGetLabelEntryFromInstanceId(labeledPlane2.GetComponent<Labeling>().instanceId, out var labelEntry, out var index)); |
|
|
|
Assert.AreEqual(-1, index); |
|
|
|
Assert.AreEqual(default(IdLabelEntry), labelEntry); |
|
|
|
} |
|
|
|