Пример #1
0
        static void RunSequence(StringBuilder sb, string initialIndent, string dataDir, string file, int seqNum)
        {
            Dictionary <Guid, int> cacheIndex;
            List <CacheItem>       cacheItems;
            List <EDSequenceEntry> edSequence;

            LoadEDSequence(file, out cacheIndex, out cacheItems, out edSequence);

            if (edSequence == null || edSequence.Count == 0)
            {
                return;
            }


            string listName  = String.Format("Sequence_{0:00000}.list", seqNum);
            string testsName = String.Format("Sequence_{0:00000}.tests", seqNum);

            using (var sw = new StreamWriter(Path.Combine(dataDir, listName), false, Encoding.UTF8))
                sw.FormatList(cacheItems);

            string indent = initialIndent + "\t";
            int    idx;
            var    pq = new PriorityQueueState();

            using (var sw = new StreamWriter(Path.Combine(dataDir, testsName), false, Encoding.UTF8)) {
                foreach (EDSequenceEntry entry in edSequence)
                {
                    idx = cacheIndex [entry.Item.Guid];

                    switch (entry.Type)
                    {
                    case EDSequenceEntryType.Enqueue:
                        sw.FormatEnqueue(pq, cacheItems, idx);
                        break;

                    case EDSequenceEntryType.Dequeue:
                        sw.FormatDequeue(pq);
                        break;

                    case EDSequenceEntryType.Disable:
                        sw.FormatDisableItem(pq, cacheItems, idx);
                        break;

                    case EDSequenceEntryType.Peek:
                        sw.FormatPeek(pq);
                        break;

                    case EDSequenceEntryType.Update:
                        sw.FormatUpdate(pq, cacheItems, entry.Item, idx);
                        break;
                    }
                }

                sw.FormatQueueSize(pq);

                while (pq.Queue.Count > 0)
                {
                    sw.FormatDequeue(pq);
                }
            }

            sb.SequenceMethodStart(initialIndent, file, seqNum);
            sb.AppendFormat("{0}RunTest (\"{1}\", \"{2}\");", indent, testsName, listName);
            sb.AppendLine();

            sb.SequenceMethodEnd(initialIndent);
        }