public void Setup()
        {
            // SetUp 意味着整个测试过程,对于每一个 Test 本方法都要执行一次。

            // 默认使用初始序列号.
            sequence = new MySequence();
        }
Example #2
0
		static void Main(string[] args)
		{
			// 构造初始的序列号. 001
			MySequence sequence = new MySequence();
			Console.WriteLine(sequence);

			// 序列号: N99
			MySequence n99 = new MySequence("N99");
			// 序列号: P00
			MySequence p00 = new MySequence("P00");

			// 序列号 递增
			n99++;
			if (n99 == p00)
			{
				Console.WriteLine(n99);
			}


			// 序列号 递减
			p00--;
			if (n99 != p00)
			{
				Console.WriteLine(p00);
			}


			// 执行 n99 = n99 + 111.
			n99 += 111;
			Console.WriteLine(n99);


			Console.ReadLine();
		}
Example #3
0
 /// <summary>
 /// 重载 Equals 方法.
 /// </summary>
 /// <returns></returns>
 public override bool Equals(object obj)
 {
     if (obj is MySequence)
     {
         MySequence oSequence = obj as MySequence;
         return(oSequence.highValue == this.highValue && oSequence.lowValue == this.lowValue);
     }
     return(false);
 }
        public void TestFixtureSetUp()
        {
            // TestFixtureSetUp 意味着整个测试过程,本方法只执行一次.

            // 初始化最小序列号
            minSequenct = new MySequence('0', 1);

            // 初始化最大序列号
            maxSequenct = new MySequence('Z', 99);
        }
Example #5
0
        /// <summary>
        /// 重载运算符 +
        /// </summary>
        /// <param name="val"></param>
        /// <param name="step"></param>
        /// <returns></returns>
        public static MySequence operator +(MySequence val, int step)
        {
            MySequence result = new MySequence(val.highValue, val.lowValue);

            // 低位++
            result.lowValue += step;

            if (result.lowValue >= 100)
            {
                // 如果低位超出范围
                // 高位 +
                result.highValue += result.lowValue / 100;

                // 低位取余
                result.lowValue = result.lowValue % 100;

                if (result.highValue >= HighCharArray.Length)
                {
                    // 如果 高位大于 可用字符数组大小,溢出.
                    throw new OverflowException();
                }
            }
            return(result);
        }
Example #6
0
		/// <summary>
		/// 重载运算符 +
		/// </summary>
		/// <param name="val"></param>
		/// <param name="step"></param>
		/// <returns></returns>
		public static MySequence operator +(MySequence val, int step)
		{
			MySequence result = new MySequence(val.highValue, val.lowValue);
			// 低位++
			result.lowValue += step;

			if (result.lowValue >= 100)
			{
				// 如果低位超出范围
				// 高位 +
				result.highValue += result.lowValue / 100;

				// 低位取余
				result.lowValue = result.lowValue % 100;

				if (result.highValue >= HighCharArray.Length)
				{
					// 如果 高位大于 可用字符数组大小,溢出.
					throw new OverflowException();
				}
			}
			return result;
		}
Example #7
0
		/// <summary>
		/// 将序列号的字符串表示形式转换为它的等效 序列号对象。一个指示转换是否成功的返回值。
		/// </summary>
		/// <param name="strVal"></param>
		/// <param name="outMySequence"></param>
		/// <returns></returns>
		public static bool TryParse(string strVal, out MySequence outMySequence)
		{
			outMySequence = new MySequence();

			if (String.IsNullOrEmpty(strVal))
			{
				// 首先传入的参数要非空
				return false;
			}
			if (strVal.Length != 3)
			{
				// 且 长度 = 3
				return false;
			}
			if (!HighCharArray.Contains(strVal[0]))
			{
				// 首字母要 大写字母, 或者数字
				// 也就是 在 高位的可用 字符 数组中.
				return false;
			}
			if (!Char.IsDigit(strVal[1]) || !Char.IsDigit(strVal[2]))
			{
				// 后两个字母为数字.
				return false;
			}

			// 高位 从 可用列表中找
			outMySequence.highValue = Array.BinarySearch(HighCharArray, strVal[0]);

			// 低位 转换为 整型
			outMySequence.lowValue = Convert.ToInt32(strVal.Substring(1));

			return true;
		}
        public void NewSequenct()
        {
            // 首先测试默认的构造函数. 结果应当等价于 001。
            Assert.AreEqual("001", sequence.ToString());

            // 再测试 几种不同的构造函数的方式,能否得出相同的序列号.
            sequence = new MySequence('0', 1);
            Assert.AreEqual("001", sequence.ToString());
        }
        public void NewSequenctArgument7()
        {
            // 字母 O 开头的,不允许.
            MySequence sequence = new MySequence('O', 0);

            // 由于上面的代码发生了异常,下面这句应该执行不到。
            Assert.Fail("本测试应该触发一个异常。");
        }
        public void PlusOverflow()
        {
            // Z98 + 2 溢出.
            sequence = new MySequence("Z99");
            sequence = sequence + 2;

            // 由于上面的代码发生了异常,下面这句应该执行不到。
            Assert.Fail("本测试应该触发一个异常。");
        }
        public void Plus()
        {
            // 001 + 100 = 101
            sequence = new MySequence("001");
            sequence = sequence + 100;
            Assert.AreEqual("101", sequence.ToString());


            // A01 + 200 = C01
            sequence = new MySequence("A01");
            sequence = sequence + 200;
            Assert.AreEqual("C01", sequence.ToString());


            // N01 + 123 = P24
            sequence = new MySequence("N01");
            sequence = sequence + 123;
            Assert.AreEqual("P24", sequence.ToString());
        }
        public void MinusMinusOverflow()
        {
            // 000-- 溢出.
            sequence = new MySequence("000");
            sequence--;

            // 由于上面的代码发生了异常,下面这句应该执行不到。
            Assert.Fail("本测试应该触发一个异常。");
        }
        public void MinusMinus()
        {
            // Z99-- = Z98
            sequence = new MySequence("Z99");
            sequence--;
            Assert.AreEqual("Z98", sequence.ToString());

            // P00-- = N99 ( 因为字母 O 被排除掉了)
            sequence = new MySequence("P00");
            sequence--;
            Assert.AreEqual("N99", sequence.ToString());

            // 001-- = 000
            sequence = new MySequence("001");
            sequence--;
            Assert.AreEqual("000", sequence.ToString());

        }
        public void PlusPlus()
        {
            // 001++ = 002
            sequence++;
            // 001++ 后,结果为 002
            Assert.AreEqual("002", sequence.ToString());

            // 测试 999++ = A00
            sequence = new MySequence("999");
            sequence++;
            Assert.AreEqual("A00", sequence.ToString());

            // 测试 N99++ = P00 ( 因为字母 O 被排除掉了)
            sequence = new MySequence("N99");
            sequence++;
            Assert.AreEqual("P00", sequence.ToString());

        }
        public void NewSequenctArgument9()
        {
            // 后面数字小于零的.
            MySequence sequence = new MySequence('A', -1);

            // 由于上面的代码发生了异常,下面这句应该执行不到。
            Assert.Fail("本测试应该触发一个异常。");
        }
        public void PlusAndPlusPlus()
        {
            sequence = new MySequence("000");
            MySequence seq2 = new MySequence("000");

            // 遍历,确保每一个 ++ 操作的结果, 与 +1 的结果是一致的.
            while (sequence != maxSequenct)
            {
                sequence++;
                seq2 = seq2 + 1;

                Assert.AreEqual(sequence, seq2);
            }
        }
        public void NewSequenctArgument6()
        {
            MySequence sequence = new MySequence("AB0");

            // 由于上面的代码发生了异常,下面这句应该执行不到。
            Assert.Fail("本测试应该触发一个异常。");
        }