コード例 #1
0
 public SupportConcatThread(ExprConcatNode node, int numLoop, string expectedResult)
 {
     _node           = node;
     _numLoop        = numLoop;
     _expectedResult = expectedResult;
     _thread         = new Thread(Run);
 }
コード例 #2
0
        private void runAssertionThreading(ConfigurationEngineDefaults.ThreadingProfile threadingProfile)
        {
            _concatNode = new ExprConcatNode();
            var textA = "This is the first text";
            var textB = "Second text";
            var textC = "Third text, some more";

            foreach (var text in new[] { textA, textB, textC })
            {
                _concatNode.AddChildNode(new ExprConstantNodeImpl(text));
            }
            _concatNode.Validate(SupportExprValidationContextFactory.MakeEmpty(_container, threadingProfile));

            var numThreads = 4;
            var numLoop    = 10000;

            var threads = new List <SupportConcatThread>(numThreads);

            for (var i = 0; i < numThreads; i++)
            {
                var thread = new SupportConcatThread(_concatNode, numLoop, textA + textB + textC);
                threads.Add(thread);
                thread.Start();
            }

            foreach (var thread in threads)
            {
                thread.Join();
                Assert.IsFalse(thread.IsFail);
            }
        }
コード例 #3
0
 public ExprConcatNodeEvalThreadLocal(
     ExprConcatNode parent,
     ExprEvaluator[] evaluators,
     IThreadLocalManager threadLocalManager)
 {
     _parent      = parent;
     _evaluators  = evaluators;
     _localBuffer = threadLocalManager.Create <StringBuilder>(() => new StringBuilder());
 }
コード例 #4
0
 public void TestToExpressionString()
 {
     _concatNode = new ExprConcatNode();
     _concatNode.AddChildNode(new SupportExprNode("a"));
     _concatNode.AddChildNode(new SupportExprNode("b"));
     Assert.AreEqual("\"a\"||\"b\"", _concatNode.ToExpressionStringMinPrecedenceSafe());
     _concatNode.AddChildNode(new SupportExprNode("c"));
     Assert.AreEqual("\"a\"||\"b\"||\"c\"", _concatNode.ToExpressionStringMinPrecedenceSafe());
 }
コード例 #5
0
 public ExprConcatNodeEvalThreadLocal(ExprConcatNode parent, ExprEvaluator[] evaluators)
 {
     _parent     = parent;
     _evaluators = evaluators;
 }
コード例 #6
0
 public void SetUp()
 {
     _container  = SupportContainer.Reset();
     _concatNode = new ExprConcatNode();
 }
コード例 #7
0
        internal static string Evaluate(EvaluateParams evaluateParams, StringBuilder buffer, ExprEvaluator[] evaluators, ExprConcatNode parent)
        {
            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.Get().QExprConcat(parent);
            }
            foreach (ExprEvaluator child in evaluators)
            {
                var resultX = (string)child.Evaluate(evaluateParams);
                if (resultX == null)
                {
                    if (InstrumentationHelper.ENABLED)
                    {
                        InstrumentationHelper.Get().AExprConcat(null);
                    }
                    return(null);
                }
                buffer.Append(resultX);
            }
            var result = buffer.ToString();

            if (InstrumentationHelper.ENABLED)
            {
                InstrumentationHelper.Get().AExprConcat(result);
            }
            return(result);
        }
コード例 #8
0
 public ExprConcatNodeEvalWNew(ExprConcatNode parent, ExprEvaluator[] evaluators)
 {
     _parent     = parent;
     _evaluators = evaluators;
 }