예제 #1
0
        internal void NotEqualOperator_WithUnequalStates_ReturnsTrue()
        {
            // Arrange
            // Act
            var fuzzyState1 = FuzzyState.Create("High");
            var fuzzyState2 = FuzzyState.Create("Low");

            // Assert
            Assert.True(fuzzyState1 != fuzzyState2);
        }
예제 #2
0
        internal void ToString_ReturnsExpectedString()
        {
            // Arrange
            var fuzzyState = FuzzyState.Create("High");

            // Act
            var result = fuzzyState.ToString();

            // Assert
            Assert.Equal("high", result);
        }
예제 #3
0
        internal void GetHashcode_ReturnsExpectedValue()
        {
            // Arrange
            var fuzzyState = FuzzyState.Create("High");

            // Act
            var result = fuzzyState.GetHashCode();

            // Assert
            Assert.Equal(-77933506, result);
        }
        internal void GetState_ReturnsExpectedState(double input, Enum state)
        {
            // Arrange
            var temperature = StubLinguisticVariableFactory.WaterTemp();

            // Act
            var result = temperature.GetState(input);

            // Assert
            Assert.Equal(FuzzyState.Create(state), result);
        }
        internal void GetSet_ReturnsTheFuzzySet()
        {
            // Arrange
            var temperature = StubLinguisticVariableFactory.WaterTemp();

            // Act
            var result = temperature.GetSet(WaterTemp.Frozen);

            // Assert
            Assert.Equal(FuzzyState.Create("frozen"), result.State);
        }
        internal void IsMember_WhenVariableDoesNotContainMember_ReturnsTrue()
        {
            // Arrange
            var temperature = StubLinguisticVariableFactory.WaterTemp();

            // Act
            var result = temperature.IsMember(FuzzyState.Create("vapour"));

            // Assert
            Assert.False(result);
        }
예제 #7
0
        internal void ToString_ReturnsExpectedString()
        {
            // Arrange
            var waterTemp  = StubLinguisticVariableFactory.WaterTemp();
            var conclusion = new Conclusion(waterTemp, LogicOperators.Is(), FuzzyState.Create(WaterTemp.Cold));

            // Act
            var result = conclusion.ToString();

            // Assert
            Assert.Equal("THEN WaterTemp IS cold", result);
        }
예제 #8
0
        internal void ValidateProposition_WhenStateNotAMemberOfLinguisticVariable_Throws()
        {
            // Arrange
            var waterTemp = StubLinguisticVariableFactory.WaterTemp();

            // Invalid fuzzy state.
            var fuzzyState = FuzzyState.Create(PumpSpeed.Off);

            // Act
            // Assert
            Assert.Throws <InvalidOperationException>(() => new Proposition(waterTemp, LogicOperators.Is(), fuzzyState));
        }
예제 #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Premise"/> class.
        /// </summary>
        /// <param name="connective">
        /// The connective logic operator.
        /// </param>
        /// <param name="variable">
        /// The linguistic variable.
        /// </param>
        /// <param name="evaluator">
        /// The evaluation logic operator.
        /// </param>
        /// <param name="state">
        /// The fuzzy state.
        /// </param>
        public Premise(
            IConnectiveOperator connective,
            LinguisticVariable variable,
            IEvaluationOperator evaluator,
            FuzzyState state)
            : base(variable, evaluator, state)
        {
            Validate.NotNull(connective, nameof(connective));
            Validate.NotNull(variable, nameof(variable));
            Validate.NotNull(state, nameof(state));

            this.Connective = connective;
            this.Subject    = variable.Subject;
        }
예제 #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Proposition"/> class.
        /// </summary>
        /// <param name="variable">
        /// The linguistic variable.
        /// </param>
        /// <param name="evaluator">
        /// The evaluation logic operator.
        /// </param>
        /// <param name="state">
        /// The fuzzy state.
        /// </param>
        public Proposition(
            LinguisticVariable variable,
            IEvaluationOperator evaluator,
            FuzzyState state)
        {
            Validate.NotNull(variable, nameof(variable));
            Validate.NotNull(evaluator, nameof(evaluator));
            Validate.NotNull(state, nameof(state));

            this.Variable  = variable;
            this.Evaluator = evaluator;
            this.State     = state;

            this.ValidateProposition();
        }
예제 #11
0
        internal void ToString_ReturnsExpectedString()
        {
            // Arrange
            var waterTemp = StubLinguisticVariableFactory.WaterTemp();
            var premise   = new Premise(
                LogicOperators.If(),
                waterTemp,
                LogicOperators.Is(),
                FuzzyState.Create(WaterTemp.Cold));

            // Act
            var result = premise.ToString();

            // Assert
            Assert.Equal("IF WaterTemp IS cold", result);
        }
예제 #12
0
        /// <summary>
        ///     Initializes the SpamSum structures
        /// </summary>
        public SpamSumContext()
        {
            self = new FuzzyState {
                Bh = new BlockhashContext[NUM_BLOCKHASHES]
            };
            for (int i = 0; i < NUM_BLOCKHASHES; i++)
            {
                self.Bh[i].Digest = new byte[SPAMSUM_LENGTH];
            }

            self.Bhstart          = 0;
            self.Bhend            = 1;
            self.Bh[0].H          = HASH_INIT;
            self.Bh[0].Halfh      = HASH_INIT;
            self.Bh[0].Digest[0]  = 0;
            self.Bh[0].Halfdigest = 0;
            self.Bh[0].Dlen       = 0;
            self.TotalSize        = 0;
            roll_init();
        }