Exemple #1
0
        public void DispenserToRegularTest()
        {
            Dispenser dispenser       = FormatParser.Parse(_testSerailNumberFormatString);
            var       expectedPattern = @"TEST20180517-[甲乙丙][A-Z]\d\d";
            var       regex           = dispenser.ToRegularExpression();
            var       target          = regex.ToString();

            Assert.AreEqual(expectedPattern, target);
        }
        /// <summary>
        /// 設定抽號機的幾使號碼
        /// </summary>
        /// <param name="dispenser">抽號機</param>
        /// <param name="startSerialNumber">起始號碼</param>
        public static void SetStartNumber(this Dispenser dispenser, string startSerialNumber)
        {
            var regex = dispenser.ToRegularExpression();

            if (!regex.IsMatch(startSerialNumber))
            {
                throw new FormatException($"{startSerialNumber} is not match this dispenser pattern !");
            }

            var setableDiskIndexes = dispenser.SymbolDisks
                                     .Select((disk, index) => (disk: disk as SetableNumberDisk, index))
                                     .Where(t => t.disk != null)
                                     .ToArray();

            foreach (var setableDisk in setableDiskIndexes)
            {
                (SetableNumberDisk disk, var index) = setableDisk;
                var collection = disk.GetEnumerableSymbols().ToArray();
                var startIndex = Array.IndexOf(collection, startSerialNumber [index]);
                disk.Skip = startIndex;
            }
        }