|  | 
|  | 1 | +// Copyright (c) Microsoft Corporation. All rights reserved. | 
|  | 2 | +// Licensed under the MIT license. See LICENSE file in the project root for full license information. | 
|  | 3 | + | 
|  | 4 | +using Windows.Win32.Foundation; | 
|  | 5 | + | 
|  | 6 | +public class VARIANT_BOOLTests | 
|  | 7 | +{ | 
|  | 8 | +    [Fact] | 
|  | 9 | +    public void Ctor_bool() | 
|  | 10 | +    { | 
|  | 11 | +        VARIANT_BOOL b = true; | 
|  | 12 | +        bool b2 = b; | 
|  | 13 | +        Assert.True(b); | 
|  | 14 | +        Assert.True(b2); | 
|  | 15 | + | 
|  | 16 | +        Assert.False(default(VARIANT_BOOL)); | 
|  | 17 | +    } | 
|  | 18 | + | 
|  | 19 | +    [Fact] | 
|  | 20 | +    public void Ctor_int() | 
|  | 21 | +    { | 
|  | 22 | +        Assert.Equal(2, new VARIANT_BOOL(2).Value); | 
|  | 23 | +    } | 
|  | 24 | + | 
|  | 25 | +    [Fact] | 
|  | 26 | +    public void ExplicitCast() | 
|  | 27 | +    { | 
|  | 28 | +        Assert.Equal(2, ((VARIANT_BOOL)2).Value); | 
|  | 29 | +    } | 
|  | 30 | + | 
|  | 31 | +    [Theory] | 
|  | 32 | +    [InlineData(3)] | 
|  | 33 | +    [InlineData(-1)] | 
|  | 34 | +    [InlineData(0)] | 
|  | 35 | +    [InlineData(1)] | 
|  | 36 | +    [InlineData(0xfff)] | 
|  | 37 | +    public void LossyConversionFromBOOLtoBool(short ordinal) | 
|  | 38 | +    { | 
|  | 39 | +        VARIANT_BOOL nativeBool = new VARIANT_BOOL(ordinal); | 
|  | 40 | +        bool managedBool = nativeBool; | 
|  | 41 | +        Assert.Equal(ordinal != 0, managedBool); | 
|  | 42 | +        BOOLEAN roundtrippedNativeBool = managedBool; | 
|  | 43 | +        Assert.Equal(managedBool ? 1 : 0, roundtrippedNativeBool); | 
|  | 44 | +    } | 
|  | 45 | + | 
|  | 46 | +    [Fact] | 
|  | 47 | +    public void BOOLEqualsComparesExactValue() | 
|  | 48 | +    { | 
|  | 49 | +        VARIANT_BOOL b1 = new VARIANT_BOOL(1); | 
|  | 50 | +        VARIANT_BOOL b2 = new VARIANT_BOOL(2); | 
|  | 51 | +        Assert.Equal(b1, b1); | 
|  | 52 | +        Assert.NotEqual(b1, b2); | 
|  | 53 | +    } | 
|  | 54 | + | 
|  | 55 | +    [Fact] | 
|  | 56 | +    public void BOOL_OverridesEqualityOperator() | 
|  | 57 | +    { | 
|  | 58 | +        var @true = new VARIANT_BOOL(true); | 
|  | 59 | +        var @false = new VARIANT_BOOL(false); | 
|  | 60 | +        Assert.True(@true == new VARIANT_BOOL(true)); | 
|  | 61 | +        Assert.False(@true != new VARIANT_BOOL(true)); | 
|  | 62 | +        Assert.True(@true != @false); | 
|  | 63 | +        Assert.False(@true == @false); | 
|  | 64 | + | 
|  | 65 | +        var two = new VARIANT_BOOL(2); | 
|  | 66 | +        Assert.False(two == @true); | 
|  | 67 | +        Assert.True(two != @true); | 
|  | 68 | +    } | 
|  | 69 | + | 
|  | 70 | +    [Fact] | 
|  | 71 | +    public void LogicalOperators_And() | 
|  | 72 | +    { | 
|  | 73 | +        VARIANT_BOOL @true = true, @false = false; | 
|  | 74 | +        Assert.False(@false && @false); | 
|  | 75 | +        Assert.False(@true && @false); | 
|  | 76 | +        Assert.True(@true && @true); | 
|  | 77 | +    } | 
|  | 78 | + | 
|  | 79 | +    [Fact] | 
|  | 80 | +    public void LogicalOperators_Or() | 
|  | 81 | +    { | 
|  | 82 | +        VARIANT_BOOL @true = true, @false = false; | 
|  | 83 | +        Assert.True(@true || @false); | 
|  | 84 | +        Assert.False(@false || @false); | 
|  | 85 | +        Assert.True(@true || @true); | 
|  | 86 | +    } | 
|  | 87 | +} | 
0 commit comments