Example #1
0
        public void ToString_ReturnedStringIsEmptyWhenPointerIsZero()
        {
            var target = new SafeBStrHandle();

            //Act
            var actual = target.ToString();

            //Assert
            actual.Should().BeEmpty();
        }
Example #2
0
 public void Ctor_NullPointerWorks()
 {
     //Act
     using (var target = new SafeBStrHandle(IntPtr.Zero))
     {
         //Assert
         target.Pointer.Should().BeZero();
         target.IsInvalid.Should().BeTrue();
     };
 }
Example #3
0
 public void StringToBStr_NullStringWorks()
 {
     //Act
     using (var target = SafeBStrHandle.StringToBStr(null))
     {
         //Assert
         target.Pointer.Should().BeZero();
         target.IsInvalid.Should().BeTrue();
     };
 }
Example #4
0
        public void ToString_ReturnedStringIsEmptyWhenZeroFree()
        {
            var ptr    = Marshal.StringToBSTR("Hello");
            var target = new SafeBStrHandle(ptr, true);

            //Act
            var actual = target.ToString();

            //Assert
            actual.Should().BeEmpty();
        }
Example #5
0
        public void ToString_ReturnsString()
        {
            var expected = "Hello";
            var target   = SafeBStrHandle.StringToBStr(expected);

            //Act
            var actual = target.ToString();

            //Assert
            actual.Should().Be(expected);
        }
Example #6
0
        public void Dispose_NullPointerWorks()
        {
            //Act
            var target = new SafeBStrHandle();

            target.Dispose();

            //Assert - No real way to confirm the memory was released
            target.Pointer.Should().BeZero();
            target.IsInvalid.Should().BeTrue();
        }
Example #7
0
        public void Ctor_ValidPointerWorks()
        {
            var expected = AllocateMemory(10);

            //Act
            using (var target = new SafeBStrHandle(expected))
            {
                //Assert
                target.Pointer.Should().Be(expected);
                target.IsInvalid.Should().BeFalse();
            };
        }
Example #8
0
        public void Dispose_ValidPointerWorks()
        {
            var ptr = AllocateMemory(10);

            //Act
            var target = new SafeBStrHandle(ptr);

            target.Dispose();

            //Assert - No real way to confirm the memory was released
            target.Pointer.Should().BeZero();
            target.IsInvalid.Should().BeTrue();
        }
Example #9
0
        public void Detach_NullPointerWorks()
        {
            //Act
            using (var target = new SafeBStrHandle())
            {
                var actual = target.Detach();

                //Assert
                target.Pointer.Should().BeZero();
                target.IsInvalid.Should().BeTrue();
                actual.Should().BeZero();
            };
        }
Example #10
0
        public void StringToBStr_ValidStringWorks()
        {
            var str = "Hello";

            //Act
            using (var target = SafeBStrHandle.StringToBStr(str))
            {
                //Assert
                target.Pointer.Should().NotBeZero();
                target.IsInvalid.Should().BeFalse();

                AssertMemory(target.Pointer, Encoding.Unicode.GetBytes("Hello"));
            };
        }
Example #11
0
        public void Attach_NullPointerWorks()
        {
            var original = AllocateMemory(10);

            //Act
            using (var target = new SafeBStrHandle(original))
            {
                target.Attach(IntPtr.Zero);

                //Assert
                target.Pointer.Should().BeZero();
                target.IsInvalid.Should().BeTrue();
            };
        }
Example #12
0
        public void Detach_ValidPointerWorks()
        {
            var expected = AllocateMemory(10);

            //Act
            using (var target = new SafeBStrHandle(expected))
            {
                var actual = target.Detach();

                //Assert
                target.Pointer.Should().BeZero();
                target.IsInvalid.Should().BeTrue();
                actual.Should().Be(expected);
            };
        }
Example #13
0
        public void Attach_ReplaceValidPointerWorks()
        {
            var original = AllocateMemory(10);
            var expected = AllocateMemory(20);

            //Act
            using (var target = new SafeBStrHandle(original))
            {
                target.Attach(expected);

                //Assert
                target.Pointer.Should().Be(expected);
                target.IsInvalid.Should().BeFalse();
            };
        }
Example #14
0
        public void Ctor_ZeroFreeMemory()
        {
            var ptr      = Marshal.StringToBSTR("Hello");
            var expected = new byte[10];
            var target   = new SafeBStrHandle(ptr, true);

            //Act
            target.Close();

            var actual = new byte[10];

            Marshal.Copy(ptr, actual, 0, actual.Length);

            //Assert
            actual.Should().ContainInOrder(expected);
        }
Example #15
0
        public void Dispose_DetachedPointerWorks()
        {
            var ptr = AllocateMemory(10);

            try
            {
                //Act
                var target = new SafeBStrHandle(ptr);
                var actual = target.Detach();
                target.Dispose();

                //Assert - doesn't really confirm the memory was released
                target.Pointer.Should().BeZero();
                target.IsInvalid.Should().BeTrue();
            } finally
            {
                FreeMemory(ptr);
            };
        }