Ejemplo n.º 1
0
    public StringConsumer(StringConsumer consumer) : this()
    {
        stack = consumer.stack.Clone();

        Current = consumer.Current;

        pos = new Location(consumer.pos.line, consumer.pos.column, consumer.pos.filename);

        reconsumeQueue = new Queue <char>(consumer.reconsumeQueue);

        lastPosition = consumer.lastPosition;
    }
Ejemplo n.º 2
0
        public void HeterogeneityDispatchTest_有2個consumer_主動通知()
        {
            var queue = GetQueue();

            var dispatch = new HeterogeneityDispatch();

            dispatch.Binding(queue);

            var consumer1 = new IntConsumer();

            dispatch.Register(consumer1);
            var consumer2 = new StringConsumer();

            dispatch.Register(consumer2);

            Task.Factory.StartNew(() => dispatch.Notice());

            Thread.Sleep(200);

            (new[] { 24, 36 }).ToExpectedObject().ShouldEqual(consumer1.Queue.ToArray());

            (new[] { "Flora MQ", "Message Queue" }).ToExpectedObject().ShouldEqual(consumer2.Queue.ToArray());
        }
Ejemplo n.º 3
0
        public void HeterogeneityDispatchTest_兩個consumer依順序取值()
        {
            var queue = GetQueue();

            var dispatch = new HeterogeneityDispatch();

            dispatch.Binding(queue);

            var consumer1 = new IntConsumer();

            dispatch.Register(consumer1);
            var consumer2 = new StringConsumer();

            dispatch.Register(consumer2);

            consumer1.DoWork();
            consumer2.DoWork();
            consumer1.DoWork();
            consumer2.DoWork();

            (new[] { 24, 36 }).ToExpectedObject().ShouldEqual(consumer1.Queue.ToArray());

            (new[] { "Flora MQ", "Message Queue" }).ToExpectedObject().ShouldEqual(consumer2.Queue.ToArray());
        }
Ejemplo n.º 4
0
        public void HeterogeneityDispatchTest_當只有一個consume取值時()
        {
            var queue = GetQueue();

            var dispatch = new HeterogeneityDispatch();

            dispatch.Binding(queue);

            var consumer1 = new IntConsumer();

            dispatch.Register(consumer1);
            var consumer2 = new StringConsumer();

            dispatch.Register(consumer2);

            consumer1.DoWork();
            consumer1.DoWork();
            consumer1.DoWork();
            consumer1.DoWork();

            (new[] { 24 }).ToExpectedObject().ShouldEqual(consumer1.Queue.ToArray());

            (new string[] { }).ToExpectedObject().ShouldEqual(consumer2.Queue.ToArray());
        }
Ejemplo n.º 5
0
 public LotusTokenizer(StringConsumer stringConsumer) : base(stringConsumer, LotusGrammar.Instance)
 {
 }