public void SetRelativeNTAsTwiceOnSameDay()
        {
            var listingDate = new Date(2000, 01, 01);
            var changeDate  = new Date(2002, 01, 01);

            var stock = new StapledSecurity(Guid.NewGuid());

            var childSecurities = new StapledSecurityChild[]
            {
                new StapledSecurityChild("ABC_1", "Child 1", true),
                new StapledSecurityChild("ABC_2", "Child 2", false)
            };

            stock.List("ABC", "ABC Pty Ltd", listingDate, AssetCategory.AustralianProperty, childSecurities);

            stock.SetRelativeNTAs(changeDate, new decimal[] { 0.30m, 0.70m });
            stock.SetRelativeNTAs(changeDate, new decimal[] { 0.60m, 0.40m });

            stock.RelativeNTAs[changeDate].Percentages.Should().Equal(new decimal[] { 0.60m, 0.40m });
        }
        public void SetRelativeNTAsPercentagesDontAddTo100()
        {
            var listingDate = new Date(2000, 01, 01);
            var changeDate  = new Date(2002, 01, 01);

            var stock = new StapledSecurity(Guid.NewGuid());

            var childSecurities = new StapledSecurityChild[]
            {
                new StapledSecurityChild("ABC_1", "Child 1", true),
                new StapledSecurityChild("ABC_2", "Child 2", false)
            };

            stock.List("ABC", "ABC Pty Ltd", listingDate, AssetCategory.AustralianProperty, childSecurities);

            Action a = () => stock.SetRelativeNTAs(changeDate, new decimal[] { 0.60m, 0.60m });

            a.Should().Throw <ArgumentException>();
        }
        public void SetRelativeNTAsBeforeListing()
        {
            var listingDate = new Date(2000, 01, 01);
            var changeDate  = new Date(1999, 01, 01);

            var stock = new StapledSecurity(Guid.NewGuid());

            var childSecurities = new StapledSecurityChild[]
            {
                new StapledSecurityChild("ABC_1", "Child 1", true),
                new StapledSecurityChild("ABC_2", "Child 2", false)
            };

            stock.List("ABC", "ABC Pty Ltd", listingDate, AssetCategory.AustralianProperty, new StapledSecurityChild[0]);

            Action a = () => stock.SetRelativeNTAs(changeDate, new decimal[] { 0.50m, 0.50m });

            a.Should().Throw <EffectiveDateException>();
        }