예제 #1
0
        /// <summary>
        /// 获取所有要查询的字段信息的数组.
        /// </summary>
        /// <returns></returns>
        internal IDescription[] GetFieldsArray()
        {
            List <IDescription> fields = new List <IDescription>();

            PropertyInfo[] ps = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            if (ps != null && ps.Length > 0)
            {
                IDescription buffer = null;
                foreach (PropertyInfo pi in ps)
                {
                    if (pi.PropertyType.IsValueType)
                    {
                        continue;
                    }
                    buffer = pi.GetValue(this) as IDescription;
                    if (buffer == null)
                    {
                        continue;
                    }
                    fields.Add(buffer);
                }
            }
            if (fields.Count < 1)
            {
                fields.Add(td.Field("*"));
            }
            return(fields.ToArray());
        }
 public override void Describe(IDescription description)
 {
     description.AppendText("a string ");
     description.AppendValue(_originalValue);
     description.AppendText(" compressing white space to ");
     description.AppendValue(_value);
 }
예제 #3
0
        /// <summary>
        /// Binds a <see cref="PerspexProperty"/> to an observable.
        /// </summary>
        /// <param name="property">The property.</param>
        /// <param name="source">The observable.</param>
        /// <param name="priority">The priority of the binding.</param>
        /// <returns>
        /// A disposable which can be used to terminate the binding.
        /// </returns>
        public IDisposable Bind(
            PerspexProperty property,
            IObservable <object> source,
            BindingPriority priority = BindingPriority.LocalValue)
        {
            Contract.Requires <NullReferenceException>(property != null);

            PriorityValue v;
            IDescription  description = source as IDescription;

            if (!IsRegistered(property))
            {
                throw new InvalidOperationException(string.Format(
                                                        "Property '{0}' not registered on '{1}'",
                                                        property.Name,
                                                        GetType()));
            }

            if (!_values.TryGetValue(property, out v))
            {
                v = CreatePriorityValue(property);
                _values.Add(property, v);
            }

            _propertyLog.Verbose(
                "Bound {Property} to {Binding} with priority {Priority}",
                property,
                source,
                priority);

            return(v.Add(source, (int)priority));
        }
예제 #4
0
 /// <summary>
 /// Count 函数解释。
 /// </summary>
 /// <param name="D">FunDescription 对象。</param>
 /// <param name="DbParameters">用于缓存在解释过程中可能会产生的参数。</param>
 /// <returns></returns>
 protected virtual string CountParsing(FunDescription D, ref List <IDbDataParameter> DbParameters)
 {
     if (D.Parameter is IDescription)
     {   // 参数为表达式或都字段。
         IDescription pDes = (IDescription)(D.Parameter);
         pDes.DescriptionParserAdapter = D.DescriptionParserAdapter;
         string param_buf = pDes.GetParser().Parsing(ref DbParameters);
         if (param_buf[0] == (char)0x20)
         {
             param_buf = param_buf.Remove(0, 1);
         }
         return(string.Format("COUNT({0})", param_buf));
     }
     else if (D.Parameter is string || D.Parameter is char)
     {
         string param_v = D.Parameter.ToString();
         if (param_v == "*")
         {   // COUNT(*) 解释。
             return("COUNT(*)");
         }
         else
         {
             throw new Exception("Count 函数使用了不正确的参数。");
         }
     }
     else
     {   // 其它情况。
         IDbDataParameter p = Adapter.CreateDbParameter("uf_count", D.Parameter);
         AddDbParameter(ref DbParameters, p);
         return(string.Format("COUNT({0})", p.ParameterName));
     }
 }
예제 #5
0
        /// <summary>
        /// 解释 FROM 子句。
        /// </summary>
        /// <param name="DbParameters">用于缓存在解释过程中可能会产生的参数。</param>
        /// <returns></returns>
        public override string Parsing(ref List <IDbDataParameter> DbParameters)
        {
            FromBlock     fb      = (FromBlock)this.Description;
            StringBuilder cBuffer = new StringBuilder(" FROM");

            foreach (object item in fb.Content)
            {
                if (item is IDescription)
                {
                    IDescription D = (IDescription)item;
                    D.DescriptionParserAdapter = fb.DescriptionParserAdapter;
                    cBuffer.Append(D.GetParser().Parsing(ref DbParameters));
                }
                else
                {
                    if (cBuffer[cBuffer.Length - 1] == (char)0x20)
                    {
                        cBuffer.Append(item);
                    }
                    else
                    {
                        cBuffer.AppendFormat(" {0}", item);
                    }
                }
            }
            return(cBuffer.ToString());
        }
        public override void DescribeTo(IDescription description)
        {
            description.AppendText("a dictionary consisting of:");

            var first = true;

            using (description.IndentBy(4))
            {
                foreach (var entryDescriptor in _entryDescriptors)
                {
                    if (!first)
                    {
                        description.AppendText(",");
                    }

                    description.AppendNewLine()
                    .AppendText("an entry where:");

                    using (description.IndentBy(4))
                    {
                        description.AppendNewLine()
                        .AppendText("key: ")
                        .AppendDescriptionOf(entryDescriptor.KeyMatcher)
                        .AppendNewLine()
                        .AppendText("value: ")
                        .AppendDescriptionOf(entryDescriptor.ValueMatcher);
                    }

                    first = false;
                }
            }
        }
예제 #7
0
 public void DescribeTo(IDescription desc)
 {
     if (desc != this)//prevent accidental self recursion
     {
         desc.Value(ToString());
     }
 }
예제 #8
0
        public static void Move(IDescription d)
        {
            LivingEntity le = d as LivingEntity;

            if (le == null)
            {
                return;
            }

            double dir = le.Direction(le.MoveTarget);

            WalkDirection(le, dir);

            double scale = 1;

            Skill skill = le.PreppedSkill ?? le.ActiveSkill;

            if (skill?.Name == "block")
            {
                scale = 0.5;
            }
            else if (skill?.Name == "counter")
            {
                scale = 0;
            }

            le.ChangeCoordsDelta(Math.Cos(dir) * scale, Math.Sin(dir) * scale);
        }
 /// <summary>
 /// Describes this object.
 /// </summary>
 /// <param name="description"></param>
 public override void DescribeOn(IDescription description)
 {
     description.AppendText("containing ")
                .AppendText("\"")
                .AppendText(substring)
                .AppendText("\"");
 }
        protected override bool MatchesSafely(IEnumerable <T> items, IDescription mismatchDescription)
        {
            List <IMatcher <T> > matchers = new List <IMatcher <T> >(_matchers);

            object lastMatchedItem = null;
            int    nextMatchIx     = 0;

            foreach (var item in items)
            {
                if (nextMatchIx < matchers.Count)
                {
                    var matcher = matchers.ElementAt(nextMatchIx);
                    if (matcher.Matches(item))
                    {
                        lastMatchedItem = item;
                        nextMatchIx++;
                    }
                }
            }

            if (nextMatchIx >= matchers.Count)
            {
                return(true);
            }

            mismatchDescription.AppendDescribable(matchers.ElementAt(nextMatchIx))
            .AppendText(" was not found");
            if (lastMatchedItem != null)
            {
                mismatchDescription.AppendText(" after ")
                .AppendValue(lastMatchedItem);
            }
            return(false);
        }
예제 #11
0
        public static string Serialize <K, V>(Dictionary <K, V> dict)
        {
            if (!dict.Any())
            {
                return("{}");
            }

            StringBuilder sb = new StringBuilder();

            sb.Append("{");

            foreach (KeyValuePair <K, V> kvp in dict)
            {
                sb.Append("(");
                sb.Append(kvp.Key);
                sb.Append(",");
                IDescription idv = kvp.Value as IDescription;
                if (idv != null)
                {
                    sb.Append(idv.Serialize());
                }
                else
                {
                    sb.Append(kvp.Value);
                }
                sb.Append(")");
                sb.Append(",");
            }

            sb.Remove(sb.Length - 1, 1);

            sb.Append("}");

            return(sb.ToString());
        }
 /// <summary>
 /// Describes this object.
 /// </summary>
 /// <param name="description"></param>
 public void DescribeOn(IDescription description)
 {
     description.AppendText("set ");
     description.AppendText(name);
     description.AppendText("=");
     description.AppendValue(value);
 }
예제 #13
0
        public static string Serialize <T>(IEnumerable <T> list)
        {
            if (!list.Any())
            {
                return("[]");
            }

            StringBuilder sb = new StringBuilder();

            sb.Append("[");

            foreach (T t in list)
            {
                IDescription idt = t as IDescription;
                if (idt != null)
                {
                    sb.Append(idt.Serialize());
                }
                else
                {
                    sb.Append(t);
                }
                sb.Append(",");
            }

            sb.Remove(sb.Length - 1, 1);

            sb.Append("]");

            return(sb.ToString());
        }
예제 #14
0
        public static Dictionary <K, V> Deserialize <K, V>(string state, Func <string, K> fkey, Func <string, V> fVal)
        {
            Dictionary <K, V> dict   = new Dictionary <K, V>();
            List <string>     tokens = DeserializeTokens(state);

            int start = 1;
            int pos   = start;

            do
            {
                pos    = GetClosingIndex(state, start, '(', ')');
                tokens = DeserializeTokens(state.Substring(start, pos - start));
                if (tokens[1].Contains(":"))
                {
                    int          indextype = tokens[1].IndexOf(':');
                    string       type      = tokens[1].Substring(0, indextype);
                    Type         t         = GetType(type);
                    object       o         = Activator.CreateInstance(t);
                    IDescription idescr    = o as IDescription;
                    if (idescr != null)
                    {
                        idescr.Deserialize(tokens[1].Substring(indextype + 1));
                        dict.Add(fkey(tokens[0]), (V)idescr);
                    }
                }
                else
                {
                    dict.Add(fkey(tokens[0]), fVal(tokens[1]));
                }
                start = pos + 1;
            }while (++pos < state.Length);

            return(dict);
        }
예제 #15
0
        /// <summary>
        /// 列的解析默认值设置.
        /// </summary>
        /// <param name="definition"></param>
        /// <param name="DbParameters"></param>
        /// <returns></returns>
        private string ParseDefaultValue(DbTableColumnDefinition definition, ref List <IDbDataParameter> DbParameters)
        {
            IDescription valueDes = definition.Default as IDescription;

            if (valueDes == null)
            {
                switch (definition.DataType)
                {
                case GenericDbType.Boolean:
                    return(string.Format("DEFAULT({0})", Convert.ToBoolean(definition.Default) ? 1 : 0));

                case GenericDbType.SmallInt:
                case GenericDbType.Int:
                case GenericDbType.BigInt:
                case GenericDbType.Single:
                case GenericDbType.Money:
                case GenericDbType.Double:
                    return(string.Format("DEFAULT({0})", definition.Default));

                case GenericDbType.Binary:
                case GenericDbType.VarBinary:
                case GenericDbType.Image:
                    throw new NotSupportedException(string.Format("Data type {0} does not support setting default value.", definition.Default));

                default:
                    return(string.Format("DEFAULT('{0}')", definition.Default.ToString()));
                }
            }
            valueDes.DescriptionParserAdapter = this.Adapter;
            return(string.Format("DEFAULT({0})", valueDes.GetParser().Parsing(ref DbParameters)));
        }
예제 #16
0
            public override void DescribeTo(IDescription desc)
            {
                var sb   = new StringBuilder("A DateTimeOffset equal to ");
                var sign = m_inclusive ? "= " : " ";

                if (!m_expect.HasValue)
                {
                    sb.Append("Null");
                }
                else
                {
                    sb.Append(m_expect.ToPrettyString());
                    if (m_maxMinus.HasValue || m_maxPlus.HasValue)
                    {
                        sb.Append(" where ");
                        if (m_maxMinus.HasValue)
                        {
                            sb.Append(m_maxMinus.Value.ToPrettyString()).Append(" <").Append(sign);
                        }
                        sb.Append(" max diff ");
                        if (m_maxPlus.HasValue)
                        {
                            sb.Append(" >").Append(sign).Append(m_maxPlus.Value.ToPrettyString());
                        }
                    }
                }
                desc.Text(sb.ToString());
            }
예제 #17
0
        static void Main(string[] args)
        {
            IDescription[] array = new IDescription[6];
            array[0] = new PrintEdition("Gari", 300, 50);
            array[1] = new Magazine("Сказки деда", 100, 20, 155);
            array[2] = new Book("Сказки бабушки", 10, 90, 255, "Фентази");
            array[3] = new Textbook("Сказки Славы", 1000, 950, 55, "Приключения", 2004);
            array[4] = new Author("Сказки Влада", 1500, 50, 155, "Детектив", 2001, "Савченко");
            array[5] = new IZdatelstvo("Сказки Вани", 1545, 540, 14555, "Сказки", 2019, "Иванов", "Беларусь");

            Console.WriteLine(array[4] is IZdatelstvo);
            //for(int i =0; i< array.Length; i++)
            //{
            //    Console.WriteLine($"{array[i]}\n");
            //}
            //user2 pr = new user2();

            //pr.Display();

            Printer p = new Printer();

            for (int i = 0; i < 5; i++)
            {
                p.IAmPrinting(array[i]);
            }
        }
        private void AddItemToBasketGrid(IDescription itemDescription)
        {
            Grid newItemGrid = new Grid();
            newItemGrid.Margin = new Thickness(5, 0, 0, 10);
            newItemGrid.Height = 50;

            var imageColumn = new ColumnDefinition();
            imageColumn.Width = new GridLength(50);

            newItemGrid.ColumnDefinitions.Add(imageColumn);
            newItemGrid.ColumnDefinitions.Add(new ColumnDefinition());

            ElementRenderer.VisualizeImageInPanel(
                newItemGrid, itemDescription.Name, App.FileManager.GetBaseDirectory(itemDescription.GetType().Name));

            var textBlock = new TextBlock();
            textBlock.Text = itemDescription.Name;
            textBlock.VerticalAlignment = System.Windows.VerticalAlignment.Center;
            textBlock.Margin = new Thickness(5, 0, 0, 0);
            textBlock.FontSize = 15;

            Grid.SetColumn(textBlock, 1);
            newItemGrid.Children.Add(textBlock);

            this.BasketElementsStackPanel.Children.Add(newItemGrid);
        }
예제 #19
0
        public override void Describe(IDescription description)
        {
            MatchCollection matches = ArgPattern.Matches(_descriptionTemplate);

            int textStart = 0;

            foreach (Match match in matches)
            {
                // Add the description
                string subStr = _descriptionTemplate.Substring(textStart, match.Index - textStart);
                description.AppendText(subStr);

                // Add the value of the description
                int argIndex = getIndex(match);
                description.AppendValue(_args[argIndex]);

                // Move our new start location
                textStart = match.Index + match.Length;
            }

            if (textStart < _descriptionTemplate.Length)
            {
                string postLength = _descriptionTemplate.Substring(textStart);
                description.AppendText(postLength);
            }
        }
예제 #20
0
        public static IDescription CreateProductDescription(string name, string[] values)
        {
            IDescription description = null;

            try
            {
                // Type of product class
                var type = FoundType(name);
                // Type of description type
                var propertyType = GetPropertyType(type, "Description");

                var list = new List <Type>();
                foreach (var value in GetCharacteristicInfo(propertyType))
                {
                    list.Add(value.Type);
                }

                var types = list.ToArray();
                // Convert values from string
                var objValues = ConvertTypes(values, types);

                description = (IDescription)propertyType.GetConstructor(types).Invoke(objValues);
            }
            catch { }
            return(description);
        }
예제 #21
0
 public override void DescribeTo(IDescription description)
 {
     description
     .AppendText("origin String should contains ")
     .AppendValue(_substring)
     .AppendText($" {_expectedCount} times");
 }
예제 #22
0
        public static void PrintExpectButGot(IDescription desc, Object actual, IMatcher matcher)
        {
            if (desc.IsNull)
            {
                return;
            }
            desc.Value("matcherType", GetMatcherType(matcher));
            desc.Child("expected", matcher);
            String s = actual as String;

            if (s != null)
            {
                int len = s.Length;
                if (len == 0)
                {
                    desc.Child("but was (empty string,quoted)", "'" + actual + "'");
                }
                else if (s.Trim().Length == 0)
                {
                    desc.Child("but was (blank string,length " + len + ",quoted)", "'" + actual + "'");
                }
                else
                {
                    desc.Child("but was (string,length " + len + ",quoted)", "'" + actual + "'");
                }
            }
            else
            {
                desc.Child("but was", actual);
            }
        }
예제 #23
0
        public static T GetDescription <T>(IContext context, string path, IRandom random) where T : class, IDescription
        {
            var          parts   = GetParts(path);
            IDescription current = null;

            for (int i = 0; i < parts.Count; i++)
            {
                current = current == null?context.dataSources.GetChild(parts[i][0]) : current.GetChild(parts[i][0]);

                if (SelectPathUtil.IsSimple(parts[i][1]))
                {
                    current = current.GetChild(parts[i][1]);
                }
                else
                {
                    var allKeys = new List <string>();
                    allKeys.AddRange(current.GetNode().GetSortedKeys());
                    var affectedKeys = SelectPathUtil.GetAffectedKeys(parts[i][1], allKeys);
                    if (affectedKeys.Count == 0)
                    {
                        return(null);
                    }

                    var selectedKey = affectedKeys[random.Range(0, affectedKeys.Count)];
                    current = current.GetChild(selectedKey);
                }
            }

            return((T)current);
        }
예제 #24
0
파일: Throws.cs 프로젝트: mminns/NHamcrest
        protected override bool Matches(Action action, IDescription mismatchDescription)
        {
            try
            {
                action();
                mismatchDescription.AppendText("no exception was thrown");
            }
            catch (T ex)
            {
                if (predicate(ex))
                {
                    return(true);
                }

                mismatchDescription.AppendText("the exception was of the correct type, but did not match the predicate")
                .AppendNewLine()
                .AppendValue(ex);
            }
            catch (Exception ex)
            {
                mismatchDescription.AppendText("an exception of type {0} was thrown", ex.GetType())
                .AppendNewLine()
                .AppendValue(ex);
            }
            return(false);
        }
예제 #25
0
        public override void DescribeMismatch(object actual, IDescription mismatch)
        {
            var converted = ConvertToString(actual);

            mismatch.AppendText("ToString()").AppendText(" ");
            _subMatcher.DescribeMismatch(converted, mismatch);
        }
예제 #26
0
        ///
        /// <param name="description">Description of dataset from module 1</param>
        public ICollectionDescription RepackToCollectionDescription(IDescription description)
        {
            int     id      = description.ID;
            Dataset dataset = description.Dataset;

            logger.LogNewInfo(string.Format("Repacking description with dataset {0} and id {1} to Collection description.", dataset, id));
            List <IModule2Property> properties       = new List <IModule2Property>();
            List <SignalCode>       processedSignals = new List <SignalCode>();

            foreach (IModule1Property property in description.Properties)
            {
                if (processedSignals.Contains(property.Code))
                {
                    logger.LogNewWarning("Two signals of the same type in one description");
                    throw new ArgumentException("ERROR Two signals of the same type in one description");
                }
                if (DatasetRepository.GetDataset(property.Code) != dataset)
                {
                    logger.LogNewWarning(string.Format("Received dataset {0} does not match dataset for signal {1}", dataset, property.Code));
                    throw new ArgumentException("Data set does not match signal.");
                }

                processedSignals.Add(property.Code);
                properties.Add(RepackToModule2Property(property));
            }

            HistoricalCollection  historicalCollection = new HistoricalCollection(properties);
            CollectionDescription repackedData         = new CollectionDescription(id, dataset, historicalCollection);

            logger.LogNewInfo("Data repacked to collection description successfully");
            return(repackedData);
        }
 /// <summary>
 /// Describes this object.
 /// </summary>
 /// <param name="description"></param>
 public void DescribeOn(IDescription description)
 {
     description.AppendText("set arg ")
                .AppendText(index.ToString())
                .AppendText("=")
                .AppendValue(value);
 }
예제 #28
0
        private bool Matches(T o, IDescription mismatchDescription)
        {
            if (o == null)
            {
                mismatchDescription.AppendText("was null");
                return(false);
            }

            var failedMatchers = _matchers.Where(m => !m.Matches(o)).ToArray();

            if (failedMatchers.Length == 0)
            {
                return(true);
            }

            mismatchDescription.AppendText(_mismatchPrefix)
            .AppendText(" ")
            .AppendText(typeof(T).Name);

            if (typeof(T) != o.GetType())
            {
                mismatchDescription
                .AppendText(" {")
                .AppendText(o.GetType().Name)
                .AppendText("}");
            }
            mismatchDescription.AppendText(" where:");

            DescribeMatchers(mismatchDescription, failedMatchers, (d, m) => m.DescribeMismatch(o, d));

            return(false);
        }
예제 #29
0
        public bool Stock(IActor seller, float price, uint count, IBook book, IDescription description)
        {
            // Check if there's enough money to pay for this shipment
            if (Money < price * count)
            {
                return(false);
            }

            Money -= price * count;

            // Ensure the book is listed in the catalog
            if (!catalog.ContainsKey(book))
            {
                description.Price = price + price * PROFIT_MARGIN; // Change from MSRP to actual price
                catalog.Add(book, description);
            }

            // Update stock count
            IInvoice invoice = inventory.Stock(book, price, count);

            // Log the delivery
            history.LogStock(seller, invoice);

            return(true);
        }
예제 #30
0
        public override void DescribeTo(IDescription description)
        {
            var matcherArray = _matcherCollection.ToArray();

            if (matcherArray.Length == 0)
            {
                description.AppendText("an empty list");
                return;
            }

            description.AppendText("a list containing:");

            using (description.IndentBy(4))
            {
                description.AppendNewLine();

                var first = true;

                foreach (var matcher in matcherArray)
                {
                    if (!first)
                    {
                        description.AppendText(",").AppendNewLine();
                    }
                    description.AppendDescriptionOf(matcher);
                    first = false;
                }
            }
        }
예제 #31
0
        public void PrepareTestDescription(IDescription form)
        {
            descriptionTestString = "";
            string caption = testRow.Name;

            descriptionTestString += "<< " + caption + " >>" + "<p>";
            string typeCaption = (testRow.IsPractice ? "Practice" : "Computer-Adaptive Test") +
                                 ((testRow.IsQuestionTypeIdNull())
                                      ? ("")
                                      :
                                  (": " +
                                   BuisinessObjects.Type.GetName(typeof(BuisinessObjects.Type), testRow.QuestionTypeId)));

            descriptionTestString += typeCaption + "<p>";
            if (navigator.TotalTime != TimeSpan.MaxValue)
            {
                descriptionTestString += "Time: " + String.Format("{0} min", navigator.TotalTime.TotalMinutes) + "<p>";
            }
            else
            {
                descriptionTestString += "Time: " + "unlimited" + "<p>";
            }
            descriptionTestString += "Number of questions: " + navigator.TotalNumberOfQuestions + "<p>";
            descriptionTestString += testRow.Description + "<p>";
            form.Caption("Description: " + testRow.Name);
            form.DescriptionString(descriptionTestString);
        }
        private void AddItemToBasketGrid(IDescription itemDescription)
        {
            Grid newItemGrid = new Grid();

            newItemGrid.Margin = new Thickness(5, 0, 0, 10);
            newItemGrid.Height = 50;

            var imageColumn = new ColumnDefinition();

            imageColumn.Width = new GridLength(50);

            newItemGrid.ColumnDefinitions.Add(imageColumn);
            newItemGrid.ColumnDefinitions.Add(new ColumnDefinition());

            ElementRenderer.VisualizeImageInPanel(
                newItemGrid, itemDescription.Name, App.FileManager.GetBaseDirectory(itemDescription.GetType().Name));

            var textBlock = new TextBlock();

            textBlock.Text = itemDescription.Name;
            textBlock.VerticalAlignment = System.Windows.VerticalAlignment.Center;
            textBlock.Margin            = new Thickness(5, 0, 0, 0);
            textBlock.FontSize          = 15;

            Grid.SetColumn(textBlock, 1);
            newItemGrid.Children.Add(textBlock);

            this.BasketElementsStackPanel.Children.Add(newItemGrid);
        }
예제 #33
0
        protected override void DescribeMismatchSafely(T[] actualItems, IDescription mismatchDescription)
        {
            if (_elementMatchers.Count != actualItems.Length)
            {
                mismatchDescription.AppendText("array length was ");
                // ReSharper disable once HeapView.BoxingAllocation
                mismatchDescription.AppendValue(actualItems.Length);
                return;
            }

            for (var i = 0; i < _elementMatchers.Count; ++i)
            {
                if (_elementMatchers[i].Matches(actualItems[i]))
                {
                    // If it matches, continue
                    continue;
                }

                // If it doesnt match, write out why
                mismatchDescription.AppendText("element ");
                // ReSharper disable once HeapView.BoxingAllocation
                mismatchDescription.AppendValue(i);
                mismatchDescription.AppendText(" ");
                _elementMatchers[i].DescribeMismatch(actualItems[i], mismatchDescription);
                return;
            }
        }
예제 #34
0
        /// <summary>
        /// Binds a <see cref="PerspexProperty"/> to an observable.
        /// </summary>
        /// <typeparam name="T">The type of the property.</typeparam>
        /// <param name="property">The property.</param>
        /// <param name="source">The observable.</param>
        /// <param name="priority">The priority of the binding.</param>
        /// <returns>
        /// A disposable which can be used to terminate the binding.
        /// </returns>
        public IDisposable Bind(
            PerspexProperty property,
            IObservable <object> source,
            BindingPriority priority = BindingPriority.LocalValue)
        {
            Contract.Requires <NullReferenceException>(property != null);

            PriorityValue v;
            IDescription  description = source as IDescription;

            if (!this.values.TryGetValue(property, out v))
            {
                v = this.CreatePriorityValue(property);
                this.values.Add(property, v);
            }

            this.Log().Debug(
                "Bound value of {0}.{1} (#{2:x8}) to {3}",
                this.GetType().Name,
                property.Name,
                this.GetHashCode(),
                description != null ? description.Description : "[Anonymous]");

            if (priority == BindingPriority.LocalValue)
            {
                return(v.Replace(source, (int)priority));
            }
            else
            {
                return(v.Add(source, (int)priority));
            }
        }
예제 #35
0
 /*
  * the comment function has been deprecated in One Platform
 public Result comment(string alias, string visibility, string comments)
 {
     string rid = getRID(alias);
     return comment(_CIK, rid, visibility, comments);
 }
 */
 public Result create(string alias, IDescription desc)
 {
     if (desc is DataportDescription)
     {
         return doCreate("dataport", alias, desc);
     }
     return null;
 }
예제 #36
0
 /// <summary>
 /// Describes this object.
 /// </summary>
 /// <param name="description"></param>
 public override void DescribeOn(IDescription description)
 {
     description.AppendText("`");
     Left.DescribeOn(description);
     description.AppendText("' and `");
     Right.DescribeOn(description);
     description.AppendText("'");
 }
 /// <summary>
 /// Describes this object.
 /// </summary>
 /// <param name="description"></param>
 public override void DescribeOn(IDescription description)
 {
     description.AppendText("[");
     WriteListOfMatchers(MatcherCount() - 1, description);
     description.AppendText("] = (");
     LastMatcher().DescribeOn(description);
     description.AppendText(")");
 }
예제 #38
0
 public override void DescribeOn(IDescription description)
 {
     DescribeToCallCount++;
     if (ExpectedDescribeToWriter != null)
     {
         Assert.AreSame(ExpectedDescribeToWriter, description, "DescribeTo writer");
     }
     description.AppendText(DescribeToOutput);
 }
예제 #39
0
 /// <summary>
 /// Writes the description of a failed match to the specified <paramref name="description"/>.
 /// </summary>
 /// <param name="description">The <see cref="TextWriter"/> where the description is written to.</param>
 /// <param name="actualValue">The actual value to be written.</param>
 /// <param name="matcher">The matcher which is used for the expected value to be written.</param>
 private static void WriteDescriptionOfFailedMatch(IDescription description, object actualValue, Matcher matcher)
 {
     description.AppendNewLine()
                .AppendText("Expected: ");
     matcher.DescribeOn(description);
     description.AppendNewLine()
                .AppendText("Actual:   ")
                .AppendValue(actualValue);
 }
예제 #40
0
 public void DescribeOn(IDescription description)
 {
     if (Equals(AllowAny)) description.AppendText("allowed");
     else if (maximum == 1 && required == 1) DescribeExpected(description, "once");
     else if (maximum == int.MaxValue && required == 1) DescribeExpected(description, "atleast once", required);
     else if (maximum == int.MaxValue && required > 1) DescribeExpected(description, "atleast {0} times", required);
     else if (maximum == required && required > 1) DescribeExpected(description, "exactly {0} times", required);
     else if (0 == required && maximum > 0) DescribeExpected(description,"at most {0} times", maximum);
     else if (Equals( NeverCardinality)) DescribeExpected(description,"never");
 }
        public InformationAboutCatalogItem(IDescription catalogItem, Uri path)
            : this()
        {
            ElementRenderer.VisualizeImageInPanel(this.PictureBoxContainer, catalogItem.Name, path);

            this.NameText.Text = catalogItem.Name;
            this.GenreText.Text = string.Join(", ", catalogItem.Genres);
            this.YearText.Text = catalogItem.ReleaseYear;

            bool isInStock = (catalogItem as IStockable).IsInStock;
            this.IsInStockText.Text = isInStock ? "Available" : "Not Available";   
            this.IsInStockText.Foreground = isInStock ? Brushes.Green : Brushes.Red;

            Button stockButton = null;

            if (catalogItem is ISaleable)
            {
                this.PriceImage.Visibility = Visibility.Visible;
                this.SellPriceTextBlock.Text = string.Format("{0:C}", (catalogItem as ISaleable).Price);

                this.SellButton.Visibility = Visibility.Visible;
                stockButton = this.SellButton;

                // Set Click event to Sell Button
                this.SellButton.Click += (sender, args) =>
                {
                    Basket.PurchasedItems.Add(catalogItem as ISaleable);
                };
            }
            else if (catalogItem is IRentable)
            {
                this.PricePerDayImage.Visibility = Visibility.Visible;
                this.RentalPricePerDayTextBlock.Text = string.Format("{0:C}", (catalogItem as IRentable).PricePerDay);

                this.RentButton.Visibility = Visibility.Visible;
                stockButton = this.RentButton;
                
                // Set Click event to Rent Button
                this.RentButton.Click += (sender, args) =>
                {
                    RentOptionScreen rentScreen = new RentOptionScreen(catalogItem as IRentable);
                    rentScreen.OldContent = this.Content;
                    this.Content = rentScreen.Content;
                    this.DataContext = rentScreen.DataContext;
                };
            }

            if (stockButton != null && !isInStock)
            {
                stockButton.IsEnabled = false;
            }

            this.CloseButton.Focus();
        }
        public void DescribeUnmetExpectationsTo(IDescription writer)
        {
            writer.AppendLine("expectations:");
            foreach (IExpectation expectation in expectations)
            {
                   Indent(writer, depth + 1);
                    expectation.DescribeUnmetExpectationsTo(writer);
                    writer.AppendNewLine();

            }
        }
예제 #43
0
 public void DescribeOn(IDescription description)
 {
     description.AppendText(name);
     if (string.IsNullOrEmpty(currentState))
     {
         description.AppendText(" has no current state");
     }
     else
     {
         description.AppendText(" is ")
                    .AppendText(currentState);
     }
 }
        /// <summary>
        /// Generates an description based on template's name (interface or class type name is used as a key).
        /// </summary>
        /// <param name="description"><see cref="IDescription"/>'s concrete implementation.</param>
        /// <param name="templateName">Template's name</param>
        /// <exception cref="ArgumentNullException">
        /// Thrown when derived <see cref="IDescription"/> interface implementation is null or template name wasn't given.
        /// </exception>
        /// <returns>Generated template's description (a class, interface, XML-file etc.) or null.</returns>
        public static string GenerateDescription(IDescription description, string templateName)
        {
            if (description == null)
            {
                throw new ArgumentNullException(nameof(description));
            }
            if (templateName == null)
            {
                throw new ArgumentNullException(nameof(templateName));
            }

            TemplateBase template;
            return TemplateStorage.Instance.Templates.TryGetValue(templateName, out template) ? new ClassGenerator(template).Generate(description) : null;
        }
예제 #45
0
        /// <summary>
        /// Describes this object.
        /// </summary>
        /// <param name="description"></param>
        public override void DescribeOn(IDescription description)
        {
            description.AppendText("element of [");

            bool separate = false;
            foreach (object element in collection)
            {
                if (separate)
                {
                    description.AppendText(", ");
                }

                description.AppendValue(element);
                separate = true;
            }

            description.AppendText("]");
        }
예제 #46
0
        /// <summary>
        /// Describes this object.
        /// </summary>
        /// <param name="description"></param>
        public override void DescribeOn(IDescription description)
        {
            description.AppendText("? ");
            if (minComparisonResult == -1)
            {
                description.AppendText("<");
            }

            if (maxComparisonResult == 1)
            {
                description.AppendText(">");
            }

            if (minComparisonResult == 0 || maxComparisonResult == 0)
            {
                description.AppendText("=");
            }

            description.AppendText(" ")
                       .AppendValue(value);
        }
예제 #47
0
        /// <summary>
        /// Gets the generated template text based on <see cref="IDescription"/> implementation.
        /// </summary>
        /// <param name="description"><see cref="IDescription"/> implementation.</param>
        /// <exception cref="ArgumentNullException">Thrown when <see cref="IDescription"/> implementation is null.</exception>
        /// <returns>Generated template text</returns>
        public string Generate(IDescription description)
        {
            if (description == null)
            {
                throw new ArgumentNullException(nameof(description));
            }

            var classTemplateString = ClassTemplate;

            classTemplateString = classTemplateString.Replace(MetadataParameters.ClassName, description.Name);
            classTemplateString = classTemplateString.Replace(MetadataParameters.DescriptionName,
                                                              description.Description);

            var classDescription = description as ClassDescription;
            if (classDescription != null)
            {
                if (classDescription.IsDataAccessClass)
                {
                    classTemplateString = classTemplateString.Replace(MetadataParameters.TableNameName,
                                                                      classDescription.TableName);
                    classTemplateString = classTemplateString.Replace(MetadataParameters.SelectSqlName,
                                                                      classDescription.BuildSqlSelect);
                    classTemplateString = classTemplateString.Replace(MetadataParameters.InsertSqlName,
                                                                      classDescription.BuildSqlInsert);
                    classTemplateString = classTemplateString.Replace(MetadataParameters.UpdateSqlName,
                                                                      classDescription.BuildSqlUpdate);
                    classTemplateString = classTemplateString.Replace(MetadataParameters.ParametersName,
                                                                      CreateParameters(classDescription).ToString());
                }

                classTemplateString = classTemplateString.Replace(MetadataParameters.PropertiesName,
                                                                  CreateProperties(classDescription).ToString());
                classTemplateString = classTemplateString.Replace(MetadataParameters.SovitusParametriName,
                                                                  CreateColumnNameParameters(classDescription).ToString());
            }

            return classTemplateString;
        }
        private void DescribeTo(IDescription writer)
        {
            DescribeMethod(writer);
            argumentsMatcher.DescribeOn(writer);
            foreach (Matcher extraMatcher in extraMatchers)
            {
                writer.AppendText(", ");
                extraMatcher.DescribeOn(writer);
            }

            if (actions.Count > 0)
            {
                writer.AppendText(", will ");
                ((IAction) actions[0]).DescribeOn(writer);
                for (int i = 1; i < actions.Count; i++)
                {
                    writer.AppendText(", ");
                    ((IAction) actions[i]).DescribeOn(writer);
                }
            }
            DescribeOrderingConstraintsOn(writer);
            sideEffects.ForEach(sideEffect => sideEffect.DescribeOn(writer));

            if (!string.IsNullOrEmpty(expectationComment))
            {
                writer.AppendText(" Comment: ")
                      .AppendText(expectationComment);
            }
        }
 private void DescribeInvocationCount(IDescription description, int count)
 {
     if(cardinality.Equals(Cardinality.Never())) return;
     description.AppendText(", ");
     if (count == 0 )
     {
         description.AppendText("never invoked");
     }
     else
     {
         description.AppendText("already invoked ");
         description.AppendText(count.ToString());
         description.AppendText(" time");
         if (count != 1)
         {
             description.AppendText("s");
         }
     }
 }
 public override void DescribeOn(IDescription description1)
 {
     description1.AppendText(description);
 }
 private void DescribeMethod(IDescription description)
 {
     cardinality.DescribeOn(description);
     DescribeInvocationCount(description, callCount);
     description.AppendText(": ")
           .AppendText(receiver.MockName)
           .AppendText(methodSeparator);
     methodMatcher.DescribeOn(description);
     genericMethodTypeMatcher.DescribeOn(description);
 }
예제 #52
0
 /// <summary>
 /// Indicates whether the current object is equal to another object of the same type.
 /// </summary>
 /// <returns>
 /// true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false.
 /// </returns>
 /// <param name="other">An object to compare with this object.</param>
 public bool Equals(IDescription other)
 {
     throw new NotImplementedException();
 }
예제 #53
0
 /// <summary>
 /// Compares the current object with another object of the same type.
 /// </summary>
 /// <returns>
 /// A value that indicates the relative order of the objects being compared. The return value has the following meanings: Value Meaning Less than zero This object is less than the <paramref name="other"/> parameter.Zero This object is equal to <paramref name="other"/>. Greater than zero This object is greater than <paramref name="other"/>. 
 /// </returns>
 /// <param name="other">An object to compare with this object.</param>
 public int CompareTo(IDescription other)
 {
     throw new NotImplementedException();
 }
 /// <summary>
 /// Describes this object.
 /// </summary>
 /// <param name="description"></param>
 public override void DescribeOn(IDescription description)
 {
     description.AppendText("<");
     WriteListOfMatchers(MatcherCount(), description);
     description.AppendText(">");
 }
        /// <summary>
        /// Writes the list of matchers to a <see cref="TextWriter"/>.
        /// </summary>
        /// <param name="listLength">Length of the list.</param>
        /// <param name="writer">The writer.</param>
        protected void WriteListOfMatchers(int listLength, IDescription writer)
        {
            for (int i = 0; i < listLength; i++)
            {
                if (i > 0)
                {
                    writer.AppendText(", ");
                }

                typeMatchers[i].DescribeOn(writer);
            }
        }
예제 #56
0
 public void DescribeTo(IDescription desc)
 {
     m_action.Invoke(desc);
 }
 public void DescribeOn(IDescription description)
 {
     description.AppendText("when ");
     predicate.DescribeOn(description);
 }
예제 #58
0
 /// <summary>
 /// Describes this object.
 /// </summary>
 /// <param name="description"></param>
 public override void DescribeOn(IDescription description)
 {
     description.AppendText(methodName);
 }
예제 #59
0
 public void DescribeTo(IDescription desc)
 {
     if (desc != this)//prevent accidental self recursion
     {
         desc.Text(ToString());
     }            
 }
 private void DescribeOrderingConstraintsOn(IDescription writer)
 {
     if (!orderingConstraints.Any()) return;
     writer.AppendText(" ");
     orderingConstraints.ForEach(constraint => constraint.DescribeOn(writer));
 }