public void CtorIsOkIfStepIdIsNotDefined()
        {
            //Arrange
            var x = new Parameter("something", null, 0);

            //Act

            //Assert
        }
        public void BothCtorCreateEqualObjects()
        {
            // Arrange
            var x1 = new Parameter("name", "SomeStepId", 0);
            var x2 = new Parameter(new Public("name"), "SomeStepId", 0);

            // Act

            // Assert
            Assert.IsTrue(x1.Equals(x2));
        }
        public void EqualityOperatorReturnsFalseIfTwoObjectsHaveDifferentCategory()
        {
            // Arrange
            var x1 = new Parameter("name1", "SomeStepId", 0);
            var x2 = new Parameter("name2", "SomeStepId", 0);

            // Act

            // Assert
            Assert.IsFalse(x1 == x2);
        }
Beispiel #4
0
        public void AddPublishedItemIdDefaultsToZero()
        {
            // Arrange
            var context = factory.Create(ContextType.Empty);
            var expected = new Parameter("something", "step1", 0);
            context.AddPublishedItem("something", "step1", new object());

            // Act
            var item = context.GetPublishedItem(expected);

            // Assert
            Assert.AreEqual(expected, item);
        }
Beispiel #5
0
        public void AddPublishedItem(Public category, int id, string publishedBy, object value)
        {
            if (category == null)
                throw new ArgumentNullException("category");
            if (publishedBy == null)
                throw new ArgumentNullException("publishedBy");
            if (id < 0)
                throw new ArgumentOutOfRangeException("id");

            var prm = new Parameter(category, publishedBy, id);
            prm.Value = value;
            values.Add(prm);
        }
        public void ValidateAddsErrorIfNumberOfInputParametersIsLessThanExpected()
        {
            // Arrange
            var x = new Flow();
            var step = new Step(null, "DoArithmetic");
            var prm = new Parameter("int", step.Id, 0);
            step.AddParameter(prm);
            x.Add(step);
            var actions = new CalculatorActionDefinitionProvider().Get;

            // Act
            var errors = x.Validate(actions);

            // Assert
            Assert.IsNotNull(errors);
            Assert.AreEqual(1, errors.Count);
            Assert.IsTrue(errors[0].Message.Contains("Number of input parameters"));
        }
        public void UnequalityOperatorReturnsFalseIfDifferentObjectsHaveTheSameCategoryAndIndexAndNullStepId()
        {
            // Arrange
            var x1 = new Parameter("name", null, 0);
            var x2 = new Parameter("name", null, 0);

            // Act

            // Assert
            Assert.IsFalse(object.ReferenceEquals(x1, x2));
            Assert.IsFalse(x1 != x2);
        }
        public void HashCodeIsTheSameForObjectsWithSameCategoryIndexAndStepId()
        {
            // Arrange
            const string name = "a name";
            const int index = 911;
            const string step = "a step";
            var x1 = new Parameter(name, step, index);
            var x2 = new Parameter(name, step, index);

            // Act

            // Assert
            Assert.AreEqual(x1.GetHashCode(), x2.GetHashCode());
        }
        public void HashCodeIsDifferentForObjectsWithSameCategoryAndIndexButDifferentStepId()
        {
            // Arrange
            const string name = "a name";
            const int index = 911;
            var x1 = new Parameter(name, "step1", index);
            var x2 = new Parameter(name, "step2", index);

            // Act

            // Assert
            Assert.AreNotEqual(x1.GetHashCode(), x2.GetHashCode());
        }
Beispiel #10
0
        public void HashCodeIsDifferentForObjectsWithDifferentIndex()
        {
            // Arrange
            const string name = "a name";
            const string step = "a step";
            var x1 = new Parameter(name, step, 0);
            var x2 = new Parameter(name, step, 1);

            // Act

            // Assert
            Assert.AreNotEqual(x1.GetHashCode(), x2.GetHashCode());
        }
Beispiel #11
0
        public void HashCodeIsDifferentForObjectsWithDifferentCategory()
        {
            // Arrange
            const int index = 911;
            const string step = "a step";
            var x1 = new Parameter("name1", step, index);
            var x2 = new Parameter("name2", step, index);

            // Act

            // Assert
            Assert.AreNotEqual(x1.GetHashCode(), x2.GetHashCode());
        }
Beispiel #12
0
        public bool Equals(Parameter other)
        {
            if (other == null)
                return false;

            return Category == other.Category &&
                               string.Equals(StepId, other.StepId, StringComparison.InvariantCultureIgnoreCase) &&
                               Id == other.Id;
        }
Beispiel #13
0
        public void UnequalityOperatorReturnsTrueIfTwoObjectsHaveTheSameCategoryAndIndexButDifferentStepId()
        {
            // Arrange
            var x1 = new Parameter("name", "step1", 0);
            var x2 = new Parameter("name", "step2", 0);

            // Act

            // Assert
            Assert.IsTrue(x1 != x2);
        }
Beispiel #14
0
        public void UnequalityOperatorReturnsFalseOnTheSameObject()
        {
            // Arrange
            var x1 = new Parameter("name", "SomeStepId", 0);

            // Act

            // Assert
            Assert.IsTrue(object.ReferenceEquals(x1, x1));
            #pragma warning disable 1718
            Assert.IsFalse(x1 != x1);
            #pragma warning restore 1718
        }
Beispiel #15
0
        public void GetPublishedItemThrowsIfParameterStepIdDoesNotMatch()
        {
            // Arrange
            var context = factory.Create(ContextType.Empty);
            context.AddPublishedItem(new Public("something"), "step1", 0);
            var prm = new Parameter(new Public("something"), "step2", 0);

            // Act

            // Assert
            Assert.Throws(typeof (ArgumentException), () => context.GetPublishedItem(prm));
        }
Beispiel #16
0
        public void GetPublishedItemReturnsCorrectItem()
        {
            // Arrange
            var context = factory.Create(ContextType.Empty);
            var expected = new Parameter("something", "step1", 3);
            context.AddPublishedItem("something", 1, "step1", new object());
            context.AddPublishedItem("something", 2, "step1", new object());
            context.AddPublishedItem("something", 3, "step1", new object());

            // Act
            var item = context.GetPublishedItem(expected);

            // Assert
            Assert.AreEqual(expected, item);
        }
        public void ValidateAddsErrorIfParameterWasNotPreviouslyPublished()
        {
            // Arrange
            var x = new Flow();
            var step = new Step(null, "PrintInt");
            var prm = new Parameter("int", step.Id, 0);
            step.AddParameter(prm);
            x.Add(step);
            var actions = new CalculatorActionDefinitionProvider().Get;

            // Act
            var errors = x.Validate(actions);

            // Assert
            Assert.IsNotNull(errors);
            Assert.AreEqual(1, errors.Count);
            Assert.IsTrue(errors[0].Message.Contains("has not been previously published"));
        }
Beispiel #18
0
        public void UnequalityOperatorReturnsTrueIfTwoObjectsHaveDifferentIndex()
        {
            // Arrange
            var x1 = new Parameter("name", "SomeStepId", 0);
            var x2 = new Parameter("name", null, 1);

            // Act

            // Assert
            Assert.IsTrue(x1 != x2);
        }
Beispiel #19
0
        public void EqualsReturnsFalseIfTwoObjectsHaveDifferentStepId()
        {
            // Arrange
            var x1 = new Parameter("name", "step1", 0);
            var x2 = new Parameter("name", "step2", 0);

            // Act

            // Assert
            Assert.IsFalse(x1.Equals(x2));
        }
Beispiel #20
0
        public void UnequalityOperatorReturnsTrueOnNull()
        {
            // Arrange
            var x1 = new Parameter("name", "SomeStepId", 0);
            Parameter x2 = null;

            // Act

            // Assert
            Assert.IsNull(x2);
            Assert.IsTrue(x1 != x2);
        }
Beispiel #21
0
        public void EqualsReturnsFalseOnNull()
        {
            // Arrange
            var x1 = new Parameter("name", "SomeStepId", 0);
            Parameter x2 = null;

            // Act

            // Assert
            Assert.IsNull(x2);
            Assert.IsFalse(x1.Equals(x2));
        }
Beispiel #22
0
        public void EqualsReturnsTrueOnTheSameObject()
        {
            // Arrange
            var x1 = new Parameter("name", "SomeStepId", 0);

            // Act

            // Assert
            Assert.IsTrue(object.ReferenceEquals(x1, x1));
            Assert.IsTrue(x1.Equals(x1));
        }
Beispiel #23
0
        public Parameter GetPublishedItem(Parameter prm)
        {
            if (prm == null)
                throw new ArgumentNullException("prm");

            Parameter item = values.Find(x => x == prm);
            if (item == null)
                throw new ArgumentException(string.Format("Item of type '{0}' published by step '{1}' with ID {2} was not found",
                                            prm.Category.Name, prm.StepId, prm.Id));
            logger.DebugFormat("Retrieved item of type '{0}' having the value of [{1}]", item.Category.Name, item.Value);
            return item;
        }