Example #1
1
        /// <summary>
        ///In 的测试
        ///</summary>
        public void In_OutTestHelperString()
        {
            LinkQueue <string> target = new LinkQueue <string>(); // TODO: 初始化为适当的值

            List <string> list = new List <string>()
            {
                "aa", "bb", "cc", "dd", "ee"
            };

            foreach (string item in list)
            {
                target.In(item);
            }

            foreach (string item in list)
            {
                Assert.AreEqual(item, target.Out());
            }

            try
            {
                target.Out();
            }
            catch (Exception myEx)
            {
                Assert.IsInstanceOfType(myEx, typeof(DataStructureException));
            }
        }
Example #2
0
        public void EnqueueAndDequeue()
        {
            var students = new Student[]
            {
                new Student {
                    No = 1, Name = "李1", Score = 22.1
                },
                new Student {
                    No = 2, Name = "李2", Score = 32.3
                },
                new Student {
                    No = 3, Name = "李3", Score = 42.5
                }
            };

            var linkQueue = new LinkQueue <Student>();

            foreach (var student in students)
            {
                linkQueue.Enqueue(new Node <Student>(student));
            }


            var deqStudent = new Node <Student>();

            while (deqStudent != null)
            {
                deqStudent = linkQueue.Dequeue();
            }
        }
Example #3
0
        /// <summary>
        /// 初始化
        /// </summary>
        public CallCenter()
        {
            #region 变量初始化
            QueueWriteToHistory = new LinkQueue <TextMessage>();
            QueueUnSendToDB     = new LinkQueue <TextMessage>();
            QueueLogin          = new LinkQueue <Login>();
            QueueWaitSend       = new LinkQueue <TextMessage>();
            #endregion

            #region IM服务端初始化配置
            PacketAnalyzer = new ProtobufPacket();
            TcpConfig.Setup(Startup.ServerConfig.MaxConnectionCount);
            Server = new TcpServer();
            Server.ChannelConnected += Server_ChannelConnected; //客户端连接时处理
            Server.ChannelDisposed  += Server_ChannelDisposed;  //客户端断开时处理
            Server.ChannelReceived  += Server_ChannelReceived;  //客户端收到消息时处理
            Server.ChannelSent      += Server_ChannelSent;      //客户端发送消息处理
            Server.Error            += Server_Error;            //服务发生错误时处理
            #endregion

            #region 线程初始化

            threadWriteToHistoryQueueWork = new Thread(new ThreadStart(WriteToHistoryQueueWork));   //写入消息历史队列处理-线程
            threadLoginQueueWork          = new Thread(new ThreadStart(LoginQueueWork));            //登录消息队列处理-线程
            threadUnsendQueueWork         = new Thread(new ThreadStart(UnsendQueueWork));           //待写入数据库的未发送出去消息队列处理-线程
            threadWaitSendQueueWork       = new Thread(new ThreadStart(WaitSendQueueWork));         //待发送给用户的消息队列处理-线程
            threadWriteToHistoryQueueWork.IsBackground = true;
            threadLoginQueueWork.IsBackground          = true;
            threadUnsendQueueWork.IsBackground         = true;
            threadWaitSendQueueWork.IsBackground       = true;

            #endregion
        }
Example #4
0
        public static async Task <string> DeleteLinked(ApplicationDbContext db, NoteHeader nh)
        {
            // Check for linked notefile(s)

            List <LinkedFile> links = await db.LinkedFile.Where(p => p.HomeFileId == nh.NoteFileId).ToListAsync();

            if (links == null || links.Count < 1)
            {
            }
            else
            {
                foreach (var link in links)
                {
                    if (link.SendTo)
                    {
                        LinkQueue q = new LinkQueue
                        {
                            Activity     = LinkAction.Delete,
                            LinkGuid     = nh.LinkGuid,
                            LinkedFileId = nh.NoteFileId,
                            BaseUri      = link.RemoteBaseUri
                        };

                        db.LinkQueue.Add(q);
                        await db.SaveChangesAsync();
                    }
                }
            }

            return("Ok");
        }
Example #5
0
 public Project(GUIIface gui, String rootDir)
 {
     linkQueue_ = new LinkQueue(gui.GetDispatcher());
     badLinkQueue_ = new LinkQueue(gui.GetDispatcher());
     startingUris_ = new ObservableCollection<Uri>();
     RootDirectory = rootDir;
 }
Example #6
0
        static void Main(string[] args)
        {
            //1.使用BCL中的队列
            //Queue<int> queue = new Queue<int>();
            //2.使用自己的顺序队列
            //IQueue<int> queue = new SeqQueue<int>();
            //3.使用自己的链队列
            IQueue<int> queue = new LinkQueue<int>();

            //入队(添加数据)
            queue.Enqueue(23);
            queue.Enqueue(45);
            queue.Enqueue(67);
            queue.Enqueue(89);
            Console.WriteLine(queue.Count);

            int i  = queue.Dequeue(); //出队(取得队首数据并删除)
            Console.WriteLine(i);
            Console.WriteLine(queue.Count);

            int j = queue.Peek();
            Console.WriteLine(j);
            Console.WriteLine(queue.Count);

            queue.Clear();
            Console.WriteLine(queue.Count);

            Console.ReadKey();
        }
Example #7
0
        /// <summary>
        ///LinkQueue`1 构造函数 的测试
        ///</summary>
        public void LinkQueueConstructorTestHelper <T>()
        {
            LinkQueue <T> target = new LinkQueue <T>();

            Assert.IsNull(target.Front);

            Assert.IsNull(target.Rear);

            Assert.AreEqual(0, target.GetLength());
        }
Example #8
0
        /// <summary>
        ///GetFront 的测试
        ///</summary>
        public void GetFrontTestHelperInt()
        {
            LinkQueue <int> target = new LinkQueue <int>(); // TODO: 初始化为适当的值

            target.In(100);

            target.In(1);

            Assert.AreEqual(100, target.GetFront());
            Assert.AreEqual(100, target.GetFront());
        }
Example #9
0
        //
        //编写测试时,还可使用以下属性:
        //
        //使用 ClassInitialize 在运行类中的第一个测试前先运行代码
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //使用 ClassCleanup 在运行完类中的所有测试后再运行代码
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //使用 TestInitialize 在运行每个测试前先运行代码
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //使用 TestCleanup 在运行完每个测试后运行代码
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion



        /// <summary>
        ///IsEmpty 的测试
        ///</summary>
        public void IsEmptyTestHelper <T>()
        {
            LinkQueue <T> target   = new LinkQueue <T>(); // TODO: 初始化为适当的值
            bool          expected = true;                // TODO: 初始化为适当的值
            bool          actual;

            actual = target.IsEmpty();
            Assert.AreEqual(expected, actual);

            target.In(default(T));
            Assert.IsFalse(target.IsEmpty());
        }
Example #10
0
        /// <summary>
        ///GetLength 的测试
        ///</summary>
        public void GetLengthTestHelper <T>()
        {
            LinkQueue <T> target = new LinkQueue <T>(); // TODO: 初始化为适当的值

            Assert.AreEqual(0, target.GetLength());

            target.In(default(T));
            Assert.AreEqual(1, target.GetLength());

            target.In(default(T));
            Assert.AreEqual(2, target.GetLength());
        }
 static void Main(string[] args)
 {
     IQueue<string> queue = new LinkQueue<string>();
     queue.EnQueue("a1");
     queue.EnQueue("a2");
     queue.EnQueue("a3");
     while (queue.IsEmpty() == false)
     {
         Console.WriteLine(queue.QueueFront);
         queue.DeQueue();
     }
 }
Example #12
0
        public static CloudQueue GetLinkQueue()
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                System.Configuration.ConfigurationManager.AppSettings["StorageConnectionString"]);

            CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();

            LinkQueue = queueClient.GetQueueReference("linkqueue");
            LinkQueue.CreateIfNotExists();
            LinkQueue.FetchAttributes();

            return(LinkQueue);
        }
Example #13
0
    void Start()
    {
        LinkQueue <int> linkQueue = new LinkQueue <int>();

        for (int i = 0; i < 3; i++)
        {
            linkQueue.Enqueue(i);
        }
        print("展示队列顶元素:" + linkQueue.Peek());
        print("队列数量:" + linkQueue.Length());
        for (int i = 0; i < 3; i++)
        {
            print(linkQueue.Dequeue());
        }
    }
Example #14
0
        /// <summary>
        ///Clear 的测试
        ///</summary>
        public void ClearTestHelper <T>()
        {
            LinkQueue <T> target = new LinkQueue <T>(); // TODO: 初始化为适当的值

            target.In(default(T));

            target.In(default(T));

            Assert.IsNotNull(target.Front);
            Assert.IsNotNull(target.Rear);


            target.Clear();
            Assert.IsNull(target.Front);
            Assert.IsNull(target.Rear);
            Assert.AreEqual(0, target.GetLength());
        }
Example #15
0
        public void Test()
        {
            LinkQueue <int> stack = new LinkQueue <int>();

            stack.EnQueue(1);
            stack.EnQueue(2);
            stack.EnQueue(3);

            Assert.Equal(1, stack.DeQueue());
            Assert.Equal(2, stack.DeQueue());
            Assert.Equal(3, stack.DeQueue());

            stack.EnQueue(1);
            stack.EnQueue(2);
            Assert.Equal(1, stack.DeQueue());
            Assert.Equal(2, stack.DeQueue());

            stack.EnQueue(3);
            Assert.Equal(3, stack.DeQueue());
            Assert.Equal(0, stack.DeQueue());
        }
Example #16
0
        public void TestAsserLinkQueue()
        {
            LinkQueue <int> A = new LinkQueue <int>();

            A.Add(1);
            A.Add(2);
            A.Add(3);
            A.Add(4);
            A.Add(5);

            //Take
            //Normal
            int testnum1 = A.Take(); //1-st
            int testnum2 = A.Take(); //2-st

            Assert.AreEqual(1, testnum1);
            Assert.AreEqual(2, testnum2);
            //Edge
            A.Take(); //3-st
            A.Take(); //4-st
            A.Take(); //5-st!
        }
        /// <summary>
        /// �õ�AOV����������������
        /// </summary>
        /// <returns>AOV����������������</returns>
        public string TopoSort()
        {
            string Result = string.Empty;
            int[] ID = GetInDegressList();
            LinkQueue<int> LQ = new LinkQueue<int>();
            for (int i = 0; i < vertexCount; i++)
            {
                if (ID[i] == 0)
                    LQ.EnQueue(i);
            }
            if (LQ.Length == vertexCount)
                throw new Exception("������ͼ�������.");
            while (LQ.IsEmpty() == false)
            {
                int j = LQ.QueueFront;
                LQ.DeQueue();

                Result += vertexList[j].VertexName + "\n";

                EdgeNode p = vertexList[j].FirstNode;
                while (p != null)
                {
                    ID[p.Index]--;
                    if (ID[p.Index] == 0)
                    {
                        LQ.EnQueue(p.Index);
                    }
                    p = p.Next;
                }
            }
            int k;
            for (k = 0; k < vertexCount; k++)
                if (ID[k] != 0)
                    break;
            return (k == vertexCount) ? Result : "��AOV���л�.";
        }
Example #18
0
File: Test.cs Project: Laetar/Epam
        public void TestAsserLinkQueue()
        {
            LinkQueue<int> A = new LinkQueue<int>();

            A.Add(1);
            A.Add(2);
            A.Add(3);
            A.Add(4);
            A.Add(5);

            //Take
            //Normal
            int testnum1 = A.Take(); //1-st
            int testnum2 = A.Take(); //2-st
            Assert.AreEqual(1, testnum1);
            Assert.AreEqual(2, testnum2);
            //Edge
            A.Take(); //3-st
            A.Take(); //4-st
            A.Take(); //5-st!
        }
Example #19
0
        public static async Task <NoteHeader> EditNote(ApplicationDbContext db, UserManager <IdentityUser> userManager, NoteHeader nh, NoteContent nc, string tags)
        {
            NoteHeader eHeader = await GetBaseNoteHeader(db, nh.Id);

            eHeader.LastEdited       = nh.LastEdited;
            eHeader.ThreadLastEdited = nh.ThreadLastEdited;
            eHeader.NoteSubject      = nh.NoteSubject;
            db.Entry(eHeader).State  = EntityState.Modified;

            NoteContent eContent = await GetNoteContent(db, nh.NoteFileId, nh.ArchiveId, nh.NoteOrdinal, nh.ResponseOrdinal);

            eContent.NoteBody        = nc.NoteBody;
            eContent.DirectorMessage = nc.DirectorMessage;
            db.Entry(eContent).State = EntityState.Modified;

            List <Tags> oTags = await GetNoteTags(db, nh.NoteFileId, nh.ArchiveId, nh.NoteOrdinal, nh.ResponseOrdinal, 0);

            db.Tags.RemoveRange(oTags);

            db.UpdateRange(oTags);
            db.Update(eHeader);
            db.Update(eContent);

            await db.SaveChangesAsync();

            // deal with tags

            if (tags != null && tags.Length > 1)
            {
                var theTags = Tags.StringToList(tags, eHeader.Id, eHeader.NoteFileId, eHeader.ArchiveId);

                if (theTags.Count > 0)
                {
                    await db.Tags.AddRangeAsync(theTags);

                    await db.SaveChangesAsync();
                }
            }

            // Check for linked notefile(s)

            List <LinkedFile> links = await db.LinkedFile.Where(p => p.HomeFileId == eHeader.NoteFileId && p.SendTo).ToListAsync();

            if (links == null || links.Count < 1)
            {
            }
            else
            {
                foreach (var link in links)
                {
                    if (link.SendTo)
                    {
                        LinkQueue q = new LinkQueue
                        {
                            Activity     = LinkAction.Edit,
                            LinkGuid     = eHeader.LinkGuid,
                            LinkedFileId = eHeader.NoteFileId,
                            BaseUri      = link.RemoteBaseUri
                        };

                        db.LinkQueue.Add(q);
                        await db.SaveChangesAsync();
                    }
                }
            }

            return(eHeader);
        }
Example #20
0
        public static async Task <NoteHeader> CreateNote(ApplicationDbContext db, UserManager <IdentityUser> userManager, NoteHeader nh, string body, string tags, string dMessage, bool send, bool linked)
        {
            if (nh.ResponseOrdinal == 0)  // base note
            {
                nh.NoteOrdinal = await NextBaseNoteOrdinal(db, nh.NoteFileId, nh.ArchiveId);
            }

            if (!linked)
            {
                nh.LinkGuid = Guid.NewGuid().ToString();
            }

            if (!send) // indicates an import operation / adjust time to UCT / assume original was CST = UCT-06, so add 6 hours
            {
                int offset = 6;
                if (nh.LastEdited.IsDaylightSavingTime())
                {
                    offset--;
                }

                Random rand = new Random();
                int    ms   = rand.Next(999);

                nh.LastEdited       = nh.LastEdited.AddHours(offset).AddMilliseconds(ms);
                nh.CreateDate       = nh.LastEdited;
                nh.ThreadLastEdited = nh.CreateDate;
            }

            NoteFile nf = await db.NoteFile
                          .Where(p => p.Id == nh.NoteFileId)
                          .FirstOrDefaultAsync();

            nf.LastEdited      = nh.CreateDate;
            db.Entry(nf).State = EntityState.Modified;
            db.NoteHeader.Add(nh);
            await db.SaveChangesAsync();

            NoteHeader newHeader = nh;

            if (newHeader.ResponseOrdinal == 0)
            {
                newHeader.BaseNoteId      = newHeader.Id;
                db.Entry(newHeader).State = EntityState.Modified;
                await db.SaveChangesAsync();
            }
            else
            {
                NoteHeader baseNote = await db.NoteHeader
                                      .Where(p => p.NoteFileId == newHeader.NoteFileId && p.ArchiveId == newHeader.ArchiveId && p.NoteOrdinal == newHeader.NoteOrdinal && p.ResponseOrdinal == 0)
                                      .FirstOrDefaultAsync();

                newHeader.BaseNoteId      = baseNote.Id;
                db.Entry(newHeader).State = EntityState.Modified;
                await db.SaveChangesAsync();
            }

            NoteContent newContent = new NoteContent()
            {
                NoteHeaderId    = newHeader.Id,
                NoteBody        = body,
                DirectorMessage = dMessage
            };

            db.NoteContent.Add(newContent);
            await db.SaveChangesAsync();

            // deal with tags

            if (tags != null && tags.Length > 1)
            {
                var theTags = Tags.StringToList(tags, newHeader.Id, newHeader.NoteFileId, newHeader.ArchiveId);

                if (theTags.Count > 0)
                {
                    await db.Tags.AddRangeAsync(theTags);

                    await db.SaveChangesAsync();
                }
            }

            // Check for linked notefile(s)

            List <LinkedFile> links = await db.LinkedFile.Where(p => p.HomeFileId == newHeader.NoteFileId && p.SendTo).ToListAsync();

            if (linked || links == null || links.Count < 1)
            {
            }
            else
            {
                foreach (var link in links)
                {
                    if (link.SendTo)
                    {
                        LinkQueue q = new LinkQueue
                        {
                            Activity     = newHeader.ResponseOrdinal == 0 ? LinkAction.CreateBase : LinkAction.CreateResponse,
                            LinkGuid     = newHeader.LinkGuid,
                            LinkedFileId = newHeader.NoteFileId,
                            BaseUri      = link.RemoteBaseUri
                        };

                        db.LinkQueue.Add(q);
                        await db.SaveChangesAsync();
                    }
                }
            }

            return(newHeader);
        }
Example #21
0
        static void Main(string[] args)
        {
            Console.WriteLine(Test(3));

            #region 线性表测试
            ////A<string> a = new A<string>();
            //SingleLinkList<string> list1 = new SingleLinkList<string>();
            //Console.WriteLine("是否是空表:{0}", list1.IsEmpty);
            //list1.Append("早上");
            //ListPrint(list1);

            //Console.WriteLine(list1.GetLength);
            //list1.Insert("你好", 0);
            //ListPrint(list1);

            //list1.Append("中上");
            //ListPrint(list1);


            //list1.Insert("陌生人", 0);
            //ListPrint(list1);
            //Console.WriteLine(list1.GetLength);

            //list1.Insert("傻逼", list1.GetLength-1);
            //ListPrint(list1);


            //Console.WriteLine("倒置表:" + list1.ReverseList());
            //ListPrint(list1);


            //Console.WriteLine("表长:{0}", list1.GetLength);
            //Console.WriteLine("是否是空表:{0}", list1.IsEmpty);
            //Console.WriteLine("删除的是:{0}", list1.Delete(4));
            //Console.WriteLine("表长:{0}", list1.GetLength);
            //ListPrint(list1);


            //Console.WriteLine("获取的是:{0}", list1.GetElem(0));
            //Console.WriteLine("获取的是:{0}", list1.Locate("傻逼"));
            //Console.WriteLine("表长:{0}", list1.GetLength);


            //list1.Delete(list1.GetLength - 2);

            //list1.SetElem("睡觉了", 0);

            //ListPrint(list1);

            //Console.WriteLine("倒置表:" + list1.ReverseList());
            //ListPrint(list1);

            //Console.WriteLine("清空");
            //list1.Clear();

            //Console.WriteLine("倒置表:" + list1.ReverseList());
            //ListPrint(list1);

            //list1.Append("中上");

            //Console.WriteLine("倒置表:" + list1.ReverseList());
            //ListPrint(list1);
            //ListPrint(list1);

            //Console.ReadKey();

            #endregion

            #region Stack测试

            //SeqStack<string> list2 = new SeqStack<string>(4);

            //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}");
            //DataStructPrint(list2);
            //list2.Clear();
            //DataStructPrint(list2);

            //list2.Push("一");
            //list2.Push("二");
            //list2.Push("三");
            //list2.Push("四");
            //list2.Push("五");
            //DataStructPrint(list2);

            //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}");


            //Console.WriteLine($"获取:{list2.GetTop()}");

            //Console.WriteLine($"出栈:{list2.Pop()}");
            //Console.WriteLine($"获取:{list2.GetTop()}");

            //Console.WriteLine($"出栈:{list2.Pop()}");
            //Console.WriteLine($"出栈:{list2.Pop()}");
            //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}");

            //Console.WriteLine($"出栈:{list2.Pop()}");
            //Console.WriteLine($"出栈:{list2.Pop()}");
            //Console.WriteLine($"出栈:{list2.Pop()}");
            //Console.WriteLine($"判空{list2.IsEmpty},元素:{list2.Count}");


            //list2.Push("六");
            //DataStructPrint(list2);


            #endregion

            #region 队列

            LinkQueue <string> list = new LinkQueue <string>();

            Console.WriteLine($"元素个数:{list.Count};是否空:{list.IsEmpty}");

            DataStructPrint(list);

            list.EnQueue("一");
            list.EnQueue("二");
            list.EnQueue("三");
            Console.WriteLine($"元素个数:{list.Count};是否空:{list.IsEmpty}");

            list.EnQueue("四");
            list.EnQueue("五");
            list.EnQueue("六");

            DataStructPrint(list);

            Console.WriteLine($"元素个数:{list.Count};是否空:{list.IsEmpty}");

            Console.WriteLine($"取出:{list.DeQueue()}");
            Console.WriteLine($"取出:{list.DeQueue()}");
            DataStructPrint(list);

            Console.WriteLine($"队头:{list.GetHead()}");

            list.Clear();
            //Console.WriteLine($"取出:{list.DeQueue()}");
            //Console.WriteLine($"取出:{list.DeQueue()}");
            //Console.WriteLine($"取出:{list.DeQueue()}");
            //Console.WriteLine($"取出:{list.DeQueue()}");


            DataStructPrint(list);

            #endregion

            Console.ReadKey();
        }
 /// <summary>
 /// �õ����������������
 /// </summary>
 /// <param name="startNodeName">���й��������������ʼ������</param>
 /// <returns>���������������</returns>
 public string BFSTraversal(string startNodeName)
 {
     string BFSResult = string.Empty;
     int i = GetIndex(startNodeName);
     if (i != -1)
     {
         for (int j = 0; j < vertexCount; j++)
             vertexList[j].Visited = false;
         vertexList[i].Visited = true;
         BFSResult += vertexList[i].VertexName + "\n";
         LinkQueue<int> Q = new LinkQueue<int>();
         Q.EnQueue(i);
         while (Q.IsEmpty() == false)
         {
             int j = Q.QueueFront;
             Q.DeQueue();
             EdgeNode p = vertexList[j].FirstNode;
             while (p != null)
             {
                 if (vertexList[p.Index].Visited == false)
                 {
                     vertexList[p.Index].Visited = true;
                     BFSResult += vertexList[p.Index].VertexName + "\n";
                     Q.EnQueue(p.Index);
                 }
                 p = p.Next;
             }
         }
     }
     return BFSResult;
 }