123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- using System;
- using NUnit.Framework;
- using Unity.Collections;
- using Unity.Collections.Tests;
-
- internal class BitFieldTests : CollectionsTestFixture
- {
- [Test]
- public void BitField32_Get_Set()
- {
- var test = new BitField32();
-
- uint bits;
-
- bits = test.GetBits(0, 32);
- Assert.AreEqual(0x0, bits);
-
- test.SetBits(0, true);
- bits = test.GetBits(0, 32);
- Assert.AreEqual(0x1, bits);
-
- test.SetBits(0, true, 32);
- bits = test.GetBits(0, 32);
- Assert.AreEqual(0xffffffff, bits);
- Assert.IsTrue(test.TestAll(0, 32));
-
- test.SetBits(0, false, 32);
- bits = test.GetBits(0, 32);
- Assert.AreEqual(0x0, bits);
-
- test.SetBits(15, true, 7);
- Assert.IsTrue(test.TestAll(15, 7));
- test.SetBits(3, true, 3);
- Assert.IsTrue(test.TestAll(3, 3));
- bits = test.GetBits(0, 32);
- Assert.AreEqual(0x3f8038, bits);
- bits = test.GetBits(0, 15);
- Assert.AreEqual(0x38, bits);
- Assert.IsFalse(test.TestNone(0, 32));
- Assert.IsFalse(test.TestAll(0, 32));
- Assert.IsTrue(test.TestAny(0, 32));
- }
-
- [Test]
- public void BitField32_Count_Leading_Trailing()
- {
- var test = new BitField32();
-
- Assert.AreEqual(0, test.CountBits());
- Assert.AreEqual(32, test.CountLeadingZeros());
- Assert.AreEqual(32, test.CountTrailingZeros());
-
- test.SetBits(31, true);
- Assert.AreEqual(1, test.CountBits());
- Assert.AreEqual(0, test.CountLeadingZeros());
- Assert.AreEqual(31, test.CountTrailingZeros());
-
- test.SetBits(0, true);
- Assert.AreEqual(2, test.CountBits());
- Assert.AreEqual(0, test.CountLeadingZeros());
- Assert.AreEqual(0, test.CountTrailingZeros());
-
- test.SetBits(31, false);
- Assert.AreEqual(1, test.CountBits());
- Assert.AreEqual(31, test.CountLeadingZeros());
- Assert.AreEqual(0, test.CountTrailingZeros());
- }
-
- [Test]
- [TestRequiresDotsDebugOrCollectionChecks]
- public void BitField32_Throws()
- {
- var test = new BitField32();
-
- for (byte i = 0; i < 32; ++i)
- {
- Assert.DoesNotThrow(() => { test.GetBits(i, (byte)(32 - i)); });
- }
-
- Assert.Throws<ArgumentException>(() => { test.GetBits(0, 33); });
- Assert.Throws<ArgumentException>(() => { test.GetBits(1, 32); });
- }
-
- [Test]
- public void BitField64_Get_Set()
- {
- var test = new BitField64();
-
- ulong bits;
-
- bits = test.GetBits(0, 64);
- Assert.AreEqual(0x0, bits);
-
- test.SetBits(0, true);
- bits = test.GetBits(0, 64);
- Assert.AreEqual(0x1, bits);
-
- test.SetBits(0, true, 64);
- bits = test.GetBits(0, 64);
- Assert.AreEqual(0xfffffffffffffffful, bits);
- Assert.IsTrue(test.TestAll(0, 64));
-
- test.SetBits(0, false, 64);
- bits = test.GetBits(0, 64);
- Assert.AreEqual(0x0ul, bits);
-
- test.SetBits(15, true, 7);
- Assert.IsTrue(test.TestAll(15, 7));
- test.SetBits(3, true, 3);
- Assert.IsTrue(test.TestAll(3, 3));
- bits = test.GetBits(0, 32);
- Assert.AreEqual(0x3f8038, bits);
- bits = test.GetBits(0, 15);
- Assert.AreEqual(0x38, bits);
- Assert.IsFalse(test.TestNone(0, 64));
- Assert.IsFalse(test.TestAll(0, 64));
- Assert.IsTrue(test.TestAny(0, 64));
- }
-
- [Test]
- [TestRequiresDotsDebugOrCollectionChecks]
- public void BitField64_Throws()
- {
- var test = new BitField64();
-
- for (byte i = 0; i < 64; ++i)
- {
- Assert.DoesNotThrow(() => { test.GetBits(i, (byte)(64 - i)); });
- }
-
- Assert.Throws<ArgumentException>(() => { test.GetBits(0, 65); });
- Assert.Throws<ArgumentException>(() => { test.GetBits(1, 64); });
- }
-
- [Test]
- public void BitField64_Count_Leading_Trailing()
- {
- var test = new BitField64();
-
- Assert.AreEqual(0, test.CountBits());
- Assert.AreEqual(64, test.CountLeadingZeros());
- Assert.AreEqual(64, test.CountTrailingZeros());
-
- test.SetBits(63, true);
- Assert.AreEqual(1, test.CountBits());
- Assert.AreEqual(0, test.CountLeadingZeros());
- Assert.AreEqual(63, test.CountTrailingZeros());
-
- test.SetBits(0, true);
- Assert.AreEqual(2, test.CountBits());
- Assert.AreEqual(0, test.CountLeadingZeros());
- Assert.AreEqual(0, test.CountTrailingZeros());
-
- test.SetBits(63, false);
- Assert.AreEqual(1, test.CountBits());
- Assert.AreEqual(63, test.CountLeadingZeros());
- Assert.AreEqual(0, test.CountTrailingZeros());
- }
- }
|