String-element class.
Inheritance: IBaseObject
コード例 #1
0
 public void AddValueTest()
 {
     var temp = new ChainsAlphabet();
     var a = new ValueString('A');
     temp.Add(a);
     var b = (BaseChain)temp[0];
     Assert.AreEqual(1, b.GetLength());
     Assert.AreEqual(a, b[0]);
 }
コード例 #2
0
 public void Initialize()
 {
     chainBase = new BaseChain(10);
     chainBase[0] = new ValueString('1');
     chainBase[1] = new ValueString('2');
     chainBase[2] = new ValueString('3');
     chainBase[3] = new ValueString('4');
     chainBase[4] = new ValueString('5');
     chainBase[5] = new ValueString('6');
     chainBase[6] = new ValueString('7');
     chainBase[7] = new ValueString('8');
     chainBase[8] = new ValueString('9');
     chainBase[9] = new ValueString('A');
 }
コード例 #3
0
        /// <summary>
        /// Removes all specified entry letters in any word
        /// </summary>
        /// <param name="str">specified substring</param>
        /// <returns>number of hints</returns>
        public int FilterOut(string str)
        {
            int len = Chain.ToString().Length;
            for (int index = Chain.GetLength(); --index >= 0;)
            {
                Chain[index] = new ValueString(Chain[index].ToString().Replace(str, replacement));
                if (Chain[index].ToString().Length == 0)
                {
                    Chain.Remove(index, 1);
                }
            }

            return Hints(len, str);
        }
コード例 #4
0
        /// <summary>
        /// The calculate.
        /// </summary>
        /// <param name="chain">
        /// The chain.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        /// <exception cref="Exception">
        /// Thrown if chain doesn't contain fmotives.
        /// </exception>
        private static bool Calculate(FmotivChain chain)
        {
            if (chain.FmotivList.Count < 1)
            {
                throw new Exception("Unable to count note remoteness with no elements in chain!");
            }

            var noteList = new List<ValueNote>(); // список нот, класса Note, всей цепи фмотивов

            foreach (Fmotiv fmotiv in chain.FmotivList)
            {
                foreach (ValueNote note in fmotiv.TieGathered().PauseTreatment((int)ParamPauseTreatment.Ignore).NoteList)
                {
                    noteList.Add((ValueNote)note.Clone());
                }
            }

            var noteChain = new Chain(noteList.Count);
            for (int i = 0; i < noteList.Count; i++)
            {
                string temp = string.Empty; // строка для временного хранения набора высот

                foreach (Pitch pitch in noteList[i].Pitch)
                {
                    temp += Convert.ToString(pitch.MidiNumber);
                }

                // TODO: переделать нормально чтоб цепочка складывалась из ValueNote, а не как попало
                noteChain[i] = new ValueString(temp + " " + Convert.ToString(noteList[i].Duration.Value * 10000000));
            }

            valR = new AverageRemoteness().Calculate(noteChain, Link.End);
            valG = new Depth().Calculate(noteChain, Link.End);
            return true;
        }
コード例 #5
0
 public void UniqueElementsTest()
 {
     firstAlphabet.Add(new ValueInt(2));
     firstAlphabet.Add(new ValueInt(3));
     firstAlphabet.Add(new ValueInt(4));
     firstAlphabet.Add(new ValueInt(5));
     firstAlphabet.Add(new ValueString("2"));
     firstAlphabet.Add(new ValueString("3"));
     firstAlphabet.Add(new ValueString("5"));
     firstAlphabet.Add(new ValueString("1"));
     firstAlphabet[0] = new ValueString("3");
     Assert.Throws<ArgumentException>(() => firstAlphabet.Add(new ValueInt(5)));
     Assert.That(firstAlphabet, Is.Unique);
 }
コード例 #6
0
        public void ToArrayTest()
        {
            var a = new ValueString('a');
            var c = new ValueString('c');
            var e = new ValueString('e');

            firstAlphabet.Add(a);
            firstAlphabet.Add(new ValueString('b'));
            firstAlphabet.Add(c);
            firstAlphabet.Add(new ValueString('d'));
            firstAlphabet.Add(e);

            Assert.AreNotSame(e, firstAlphabet[4]);
            Assert.AreNotSame(c, firstAlphabet[2]);
            Assert.AreNotSame(a, firstAlphabet[0]);
        }
コード例 #7
0
 public void IndependentStringTest()
 {
     firstAlphabet.Add(new ValueString("2"));
     firstAlphabet.Add(new ValueString("3"));
     firstAlphabet.Add(new ValueString("5"));
     firstAlphabet.Add(new ValueString("1"));
     firstAlphabet[0] = new ValueString("3");
     Assert.AreEqual(new ValueString("2"), firstAlphabet[0]);
     Assert.AreEqual(new ValueString("3"), firstAlphabet[1]);
     Assert.AreEqual(new ValueString("5"), firstAlphabet[2]);
     Assert.AreEqual(new ValueString("1"), firstAlphabet[3]);
 }
コード例 #8
0
 public void SetByThisTest()
 {
     chain[0] = new ValueString('1');
     Assert.IsTrue(((ValueString)chain.Get(0)).Equals("1"));
 }
コード例 #9
0
        /// <summary>
        /// Method adds new element into generated sequence.
        /// And calls the same method of one of the children if sequence is incomplete.
        /// </summary>
        /// <param name="result">
        /// Generated sequence.
        /// </param>
        /// <param name="generator">
        /// Random number generator.
        /// </param>
        /// <param name="table">
        /// Parameters table.
        /// </param>
        public void FillChain(BaseChain result, IGenerator generator, PhantomTable table)
        {
            if ((table.Length != (Level + 2)) && (Children.Count == 0))
            {
                ValuePhantom temp = table[Level + 2].Content;
                for (int i = 0; i < temp.Cardinality; i++)
                {
                    Children.Add(new TreeNode(this, temp[i], table));
                }
            }

            if ((id is BaseChain) || (id is ValueString))
            {
                string amino = id.ToString();
                for (int k = 0; k < amino.Length; k++)
                {
                    result[StartPosition + k] = new ValueString(amino[k]);
                }
            }
            else
            {
                result[StartPosition] = id;
            }

            Find(result, generator, table);
        }
コード例 #10
0
        /// <summary>
        /// The equals.
        /// </summary>
        /// <param name="other">
        /// The other.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Equals(ValueString other)
        {
            if (other == null)
            {
                return false;
            }

            return string.Equals(Value, other.Value);
        }
コード例 #11
0
        public void Initialize()
        {
            alphabet = new Alphabet();
            a = new ValueString('a');
            b = new ValueString('b');
            c = new ValueString('c');
            d = new ValueString('d');
            f = new ValueString('f');

            testChain = new Chain(12);
            testChain.Set((ValueString)"a", 0);
            testChain.Set((ValueString)"d", 1);
            testChain.Set((ValueString)"b", 2);
            testChain.Set((ValueString)"a", 3);
            testChain.Set((ValueString)"a", 4);
            testChain.Set((ValueString)"c", 5);
            testChain.Set((ValueString)"b", 6);
            testChain.Set((ValueString)"b", 7);
            testChain.Set((ValueString)"a", 8);
            testChain.Set((ValueString)"a", 9);
            testChain.Set((ValueString)"c", 10);
            testChain.Set((ValueString)"a", 11);
        }
コード例 #12
0
 public void Initialization()
 {
     message = new ValueString('1');
     congenericChain = new CongenericChain(message, 10);
     wrongMessage = new ValueString('2');
 }
コード例 #13
0
        public void EncodeTripletsTest(string triplet)
        {
            var input = new BaseChain(triplet.Length);
            for (int i = 0; i < triplet.Length; i++)
            {
                input[i] = new ValueString(triplet[i]);
            }

            BaseChain result = DnaTransformer.EncodeTriplets(input);

            for (int i = 0; i < result.GetLength(); i++)
            {
                Assert.AreEqual(new ValueString(triplet.Substring(i * 3, 3)), result[i]);
            }
        }
コード例 #14
0
        public void EncodeAminoTest(string triplet, string amino)
        {
            var input = new BaseChain(triplet.Length);
            for (int i = 0; i < triplet.Length; i++)
            {
                input[i] = new ValueString(triplet[i]);
            }

            BaseChain result = DnaTransformer.EncodeAmino(input);

            for (int i = 0; i < result.GetLength(); i++)
            {
                Assert.AreEqual(new ValueString(amino[i]), result[i]);
            }
        }
コード例 #15
0
        /// <summary>
        /// The concat.
        /// </summary>
        /// <param name="str">
        /// The string.
        /// </param>
        /// <returns>
        /// The <see cref="ComplexChain"/>.
        /// </returns>
        public ComplexChain Concat(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return this;
            }

            ComplexChain temp = Clone();
            ClearAndSetNewLength(GetLength() + 1);
            for (int i = 0; i < temp.GetLength(); i++)
            {
                this[i] = temp[i];
            }

            this[GetLength() - 1] = new ValueString(str);
            return this;
        }