public void MapTopicContainerSetsQuestionsWithNoParentAsAnswers()
        {
            var post1 = new Post {
                PostID = 1, ParentPostID = 0
            };
            var post2 = new Post {
                PostID = 2, IsFirstInTopic = true
            };
            var post3 = new Post {
                PostID = 3, ParentPostID = 2
            };
            var post4 = new Post {
                PostID = 4, ParentPostID = 1
            };
            var post5 = new Post {
                PostID = 5, ParentPostID = 3
            };
            var posts = new List <Post> {
                post1, post2, post3, post4, post5
            };
            var topicContainer = new TopicContainer {
                Posts = posts, Topic = new Topic {
                    TopicID = 1234
                }
            };
            var service = GetService();
            var result  = service.MapTopicContainerForQA(topicContainer);

            Assert.Single(result.AnswersWithComments);
            Assert.Same(post1, result.AnswersWithComments[0].Post);
        }
示例#2
0
        /// <summary>
        /// The create topic line.
        /// </summary>
        /// <param name="containerDataItem">
        /// The container data item.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        protected string CreateTopicLine(DataRowView containerDataItem)
        {
            var topicLine = new TopicContainer {
                DataRow = containerDataItem
            };

            return(topicLine.RenderToString());
        }
示例#3
0
        /// <summary>
        /// The create topic line.
        /// </summary>
        /// <param name="item">
        /// The item.
        /// </param>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        protected string CreateTopicLine(object item)
        {
            var topicLine = new TopicContainer {
                Item = item as PagedTopic
            };

            return(topicLine.RenderToString());
        }
        public void Initialize()
        {
            Ros.MasterUri = new Uri("http://localhost:11311/");
            Ros.HostName  = "localhost";

            var topicContainer = new TopicContainer();

            topicContainer.AddPublisher(new Publisher <std_msgs.String>("/test_topic", "test"));

            var tcpListener = new TcpRosListener(0);

            _slaveServer = new SlaveServer("test", 0, topicContainer);
            _slaveServer.AddListener("/test_topic", tcpListener);
        }
示例#5
0
        public TopicContainerForQA MapTopicContainerForQA(TopicContainer topicContainer)
        {
            var result = new TopicContainerForQA
            {
                Forum             = topicContainer.Forum,
                Topic             = topicContainer.Topic,
                Posts             = topicContainer.Posts,
                PagerContext      = topicContainer.PagerContext,
                PermissionContext = topicContainer.PermissionContext,
                IsSubscribed      = topicContainer.IsSubscribed,
                IsFavorite        = topicContainer.IsFavorite,
                Signatures        = topicContainer.Signatures,
                Avatars           = topicContainer.Avatars,
                VotedPostIDs      = topicContainer.VotedPostIDs
            };

            try
            {
                var questionPost     = result.Posts.Single(x => x.IsFirstInTopic);
                var questionComments = result.Posts.Where(x => x.ParentPostID == questionPost.PostID).ToList();
                result.QuestionPostWithComments = new PostWithChildren {
                    Post = questionPost, Children = questionComments, LastReadTime = topicContainer.LastReadTime
                };
            }
            catch (InvalidOperationException)
            {
                throw new InvalidOperationException(String.Format("There is no post marked as FirstInTopic for TopicID {0}.", topicContainer.Topic.TopicID));
            }
            var answers = result.Posts.Where(x => !x.IsFirstInTopic && (x.ParentPostID == 0)).OrderByDescending(x => x.Votes).ThenByDescending(x => x.PostTime).ToList();

            if (topicContainer.Topic.AnswerPostID.HasValue)
            {
                var acceptedAnswer = answers.SingleOrDefault(x => x.PostID == topicContainer.Topic.AnswerPostID.Value);
                if (acceptedAnswer != null)
                {
                    answers.Remove(acceptedAnswer);
                    answers.Insert(0, acceptedAnswer);
                }
            }
            result.AnswersWithComments = new List <PostWithChildren>();
            foreach (var item in answers)
            {
                var comments = result.Posts.Where(x => x.ParentPostID == item.PostID).ToList();
                result.AnswersWithComments.Add(new PostWithChildren {
                    Post = item, Children = comments, LastReadTime = topicContainer.LastReadTime
                });
            }
            return(result);
        }
示例#6
0
        public void Initialize()
        {
            Ros.MasterUri     = new Uri("http://localhost:11311/");
            Ros.HostName      = "localhost";
            Ros.TopicTimeout  = 3000;
            Ros.XmlRpcTimeout = 3000;

            _container = new TopicContainer();
            var listener = new TcpRosListener(0);

            _slaveServer = new SlaveServer("test", 0, _container);
            _slaveServer.AddListener("test", listener);

            _slaveClient = new SlaveClient(_slaveServer.SlaveUri);
        }
示例#7
0
 public void Init()
 {
     text           = textObj.GetComponent <Text>();
     thoughtSpawner = thoughtSpawnerObj.GetComponent <ThoughtSpawner>();
     tc             = JsonUtility.FromJson <TopicContainer>(JSONContainer.gameJSON);
     for (int i = 0; i < tc.topics.Length; i++)
     {
         topics.Add(tc.topics[i].topic, tc.topics[i]);
     }
     for (int i = 0; i < expressionNames.Count; i++)
     {
         expressions.Add(expressionNames[i], expressionObjs[i]);
     }
     ender = CreateConversationEnder();
     StartRandomTopic();
 }
示例#8
0
        internal SlaveServer(string nodeId, int portNumber, TopicContainer topicContainer)
        {
            NodeId  = nodeId;
            _logger = RosOutLogManager.GetCurrentNodeLogger(NodeId);

            _topicContainer = topicContainer;
            _tcpRosListener = new Dictionary <string, TcpRosListener>();

            string slaveName = "slave" + Guid.NewGuid().ToString("N");

            _channel = new HttpServerChannel(slaveName, portNumber, new XmlRpcServerFormatterSinkProvider());
            var tmp = new Uri(_channel.GetChannelUri());

            SlaveUri = new Uri("http://" + Ros.HostName + ":" + tmp.Port + "/" + slaveName);

            ChannelServices.RegisterChannel(_channel, false);
            RemotingServices.Marshal(this, slaveName); //Marshalするときの名前に/を入れるとだめ。
        }
示例#9
0
        public void RemoveSubscriber_Success()
        {
            var         container = new TopicContainer();
            ISubscriber sub;

            container.HasSubscriber("sub1").Is(false);
            container.GetSubscribers().Count.Is(0);

            container.AddSubscriber(new Subscriber <std_msgs.String>("sub1", "test")).Is(true);
            container.HasSubscriber("sub1").Is(true);
            container.GetSubscribers().Count.Is(1);
            container.GetSubscriber("sub1", out sub).Is(true);

            container.RemoveSubscriber("sub1").Is(true);
            container.GetSubscriber("sub1", out sub).Is(false);

            container.RemoveSubscriber("sub1").Is(false);
        }
示例#10
0
        public void AddPublisher_AlreadyAdded()
        {
            var        container = new TopicContainer();
            IPublisher pub;

            container.HasPublisher("pub1").Is(false);
            container.GetPublishers().Count.Is(0);

            container.AddPublisher(new Publisher <std_msgs.String>("pub1", "test")).Is(true);
            container.HasPublisher("pub1").Is(true);
            container.GetPublishers().Count.Is(1);
            container.GetPublisher("pub1", out pub).Is(true);

            container.AddPublisher(new Publisher <std_msgs.String>("pub1", "test")).Is(false);
            container.HasPublisher("pub1").Is(true);
            container.GetPublishers().Count.Is(1);
            container.GetPublisher("pub1", out pub).Is(true);
        }
        public void MapTopicContainerOrdersAnswersByVoteThenDate()
        {
            var post1 = new Post {
                PostID = 1, IsFirstInTopic = true
            };
            var post2 = new Post {
                PostID = 2, Votes = 7, PostTime = new DateTime(2000, 1, 1)
            };
            var post3 = new Post {
                PostID = 3, Votes = 7, PostTime = new DateTime(2000, 2, 1)
            };
            var post4 = new Post {
                PostID = 4, Votes = 2
            };
            var post5 = new Post {
                PostID = 5, Votes = 3
            };
            var post6 = new Post {
                PostID = 6, Votes = 8
            };
            var post7 = new Post {
                PostID = 7, Votes = 5
            };
            var posts = new List <Post> {
                post1, post2, post3, post4, post5, post6, post7
            };
            var topic = new Topic {
                TopicID = 123, AnswerPostID = null
            };
            var topicContainer = new TopicContainer {
                Posts = posts, Topic = topic
            };
            var service = GetService();
            var result  = service.MapTopicContainerForQA(topicContainer);

            Assert.Same(post6, result.AnswersWithComments[0].Post);
            Assert.Same(post3, result.AnswersWithComments[1].Post);
            Assert.Same(post2, result.AnswersWithComments[2].Post);
            Assert.Same(post7, result.AnswersWithComments[3].Post);
            Assert.Same(post5, result.AnswersWithComments[4].Post);
            Assert.Same(post4, result.AnswersWithComments[5].Post);
        }
        public void MapTopicContainerThrowsWithMoreThanOneFirstInTopicPost()
        {
            var posts = new List <Post>
            {
                new Post {
                    PostID = 1, IsFirstInTopic = true
                },
                new Post {
                    PostID = 2, IsFirstInTopic = true
                }
            };
            var topicContainer = new TopicContainer {
                Posts = posts, Topic = new Topic {
                    TopicID = 123
                }
            };
            var service = GetService();

            Assert.Throws <InvalidOperationException>(() => service.MapTopicContainerForQA(topicContainer));
        }
示例#13
0
        public Node(string nodeId)
        {
            _disposed = false;

            NodeId = nodeId;

            _logger = RosOutLogManager.GetCurrentNodeLogger(NodeId);

            if (_logger.IsDebugEnabled)
            {
                LogLevel = Log.DEBUG;
            }
            else if (_logger.IsInfoEnabled)
            {
                LogLevel = Log.INFO;
            }
            else if (_logger.IsWarnEnabled)
            {
                LogLevel = Log.WARN;
            }
            else if (_logger.IsErrorEnabled)
            {
                LogLevel = Log.ERROR;
            }
            else if (_logger.IsFatalEnabled)
            {
                LogLevel = Log.FATAL;
            }

            _masterClient          = new MasterClient(Ros.MasterUri);
            _parameterServerClient = new ParameterServerClient(Ros.MasterUri);

            _serviceProxyFactory = new ServiceProxyFactory(NodeId);

            _topicContainer = new TopicContainer();
            _slaveServer    = new SlaveServer(NodeId, 0, _topicContainer);

            _slaveServer.ParameterUpdated += SlaveServerOnParameterUpdated;

            _logger.InfoFormat("Create Node: {0}", nodeId);
        }
        public void MapTopicContainerGrabsFirstPostForQuestion()
        {
            var posts = new List <Post>
            {
                new Post {
                    PostID = 1
                },
                new Post {
                    PostID = 2, IsFirstInTopic = true
                }
            };
            var topicContainer = new TopicContainer {
                Posts = posts, Topic = new Topic {
                    TopicID = 123
                }
            };
            var service = GetService();
            var result  = service.MapTopicContainerForQA(topicContainer);

            Assert.Equal(2, result.QuestionPostWithComments.Post.PostID);
        }
        public void MapTopicContainerMapsCommentsToParentQuestionsAndAnswers()
        {
            var post1 = new Post {
                PostID = 1, ParentPostID = 0
            };
            var post2 = new Post {
                PostID = 2, IsFirstInTopic = true
            };
            var post3 = new Post {
                PostID = 3, ParentPostID = 0
            };
            var post4 = new Post {
                PostID = 4, ParentPostID = 1
            };
            var post5 = new Post {
                PostID = 5, ParentPostID = 2
            };
            var post6 = new Post {
                PostID = 6, ParentPostID = 3
            };
            var post7 = new Post {
                PostID = 7, ParentPostID = 3
            };
            var posts = new List <Post> {
                post1, post2, post3, post4, post5, post6, post7
            };
            var topicContainer = new TopicContainer {
                Posts = posts, Topic = new Topic {
                    TopicID = 1234
                }
            };
            var service = GetService();
            var result  = service.MapTopicContainerForQA(topicContainer);

            Assert.True(result.AnswersWithComments[0].Children.Count == 1);
            Assert.Contains(post4, result.AnswersWithComments[0].Children);
            Assert.True(result.AnswersWithComments[1].Children.Count == 2);
            Assert.Contains(post6, result.AnswersWithComments[1].Children);
            Assert.Contains(post7, result.AnswersWithComments[1].Children);
        }
        public void MapTopicContainerMapsLastReadTimeToQuestionAndAnswerSets()
        {
            var post1 = new Post {
                PostID = 1, ParentPostID = 0
            };
            var post2 = new Post {
                PostID = 2, IsFirstInTopic = true
            };
            var post3 = new Post {
                PostID = 3, ParentPostID = 0
            };
            var post4 = new Post {
                PostID = 4, ParentPostID = 1
            };
            var post5 = new Post {
                PostID = 5, ParentPostID = 2
            };
            var post6 = new Post {
                PostID = 6, ParentPostID = 3
            };
            var post7 = new Post {
                PostID = 7, ParentPostID = 3
            };
            var posts = new List <Post> {
                post1, post2, post3, post4, post5, post6, post7
            };
            var lastRead       = new DateTime(2000, 1, 1);
            var topicContainer = new TopicContainer {
                Posts = posts, Topic = new Topic {
                    TopicID = 1234
                }, LastReadTime = lastRead
            };
            var service = GetService();
            var result  = service.MapTopicContainerForQA(topicContainer);

            Assert.Equal(lastRead, result.AnswersWithComments[0].LastReadTime);
            Assert.Equal(lastRead, result.AnswersWithComments[1].LastReadTime);
            Assert.Equal(lastRead, result.QuestionPostWithComments.LastReadTime);
        }
        public void MapTopicContainerForQAMapsBaseProperties()
        {
            var topicContainer = new TopicContainer
            {
                Forum = new Forum {
                    ForumID = 1
                },
                Topic = new Topic {
                    TopicID = 2
                },
                Posts = new List <Post> {
                    new Post {
                        PostID = 123, IsFirstInTopic = true
                    }
                },
                PagerContext      = new PagerContext(),
                PermissionContext = new ForumPermissionContext(),
                IsSubscribed      = true,
                IsFavorite        = true,
                Signatures        = new Dictionary <int, string>(),
                Avatars           = new Dictionary <int, int>(),
                VotedPostIDs      = new List <int>()
            };
            var service = GetService();
            var result  = service.MapTopicContainerForQA(topicContainer);

            Assert.Same(topicContainer.Forum, result.Forum);
            Assert.Same(topicContainer.Topic, result.Topic);
            Assert.Same(topicContainer.Posts, result.Posts);
            Assert.Same(topicContainer.PagerContext, result.PagerContext);
            Assert.Same(topicContainer.PermissionContext, result.PermissionContext);
            Assert.True(topicContainer.IsSubscribed);
            Assert.True(topicContainer.IsFavorite);
            Assert.Same(topicContainer.Signatures, result.Signatures);
            Assert.Same(topicContainer.Avatars, result.Avatars);
            Assert.Same(topicContainer.VotedPostIDs, result.VotedPostIDs);
        }
        public void MapTopicContainerDoesNotMapCommentsForTopQuestionAsReplies()
        {
            var post1 = new Post {
                PostID = 1, ParentPostID = 0
            };
            var post2 = new Post {
                PostID = 2, IsFirstInTopic = true
            };
            var post3 = new Post {
                PostID = 3, ParentPostID = 0
            };
            var post4 = new Post {
                PostID = 4, ParentPostID = 1
            };
            var post5 = new Post {
                PostID = 5, ParentPostID = 2
            };
            var post6 = new Post {
                PostID = 6, ParentPostID = 3
            };
            var post7 = new Post {
                PostID = 7, ParentPostID = 3
            };
            var posts = new List <Post> {
                post1, post2, post3, post4, post5, post6, post7
            };
            var topicContainer = new TopicContainer {
                Posts = posts, Topic = new Topic {
                    TopicID = 1234
                }
            };
            var service = GetService();
            var result  = service.MapTopicContainerForQA(topicContainer);

            Assert.DoesNotContain(result.AnswersWithComments, x => x.Post.PostID == post5.PostID);
        }
示例#19
0
    void DropObject()
    {
        // Is there a droppable container?
        Collider col = UICamera.lastHit.collider;
        TopicContainer container = (col != null) ? col.gameObject.GetComponent<TopicContainer>() : null;

        if (container != null && container.IsEmpty())
        {
            Vector3 pos = container.transform.position;
            pos.z = transform.position.z;
            transform.position = pos;
            droppedInContainer = true;
            myContainer = container;
            container.CheckIfCorrectTopic(this);
        }
        else
        {
            ReturnToBubble();
        }
    }