<commit_before>﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="TelerikRadNumericUpDown.cs" company="2GIS">
//   Cruciatus
// </copyright>
// <summary>
//   Представляет элемент управления числовое поле (from Telerik).
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Cruciatus.Elements
{
    using System;
    using System.Windows.Automation;

    using Cruciatus.Exceptions;
    using Cruciatus.Extensions;
    using Cruciatus.Interfaces;

    /// <summary>
    /// Представляет элемент управления числовое поле (from Telerik).
    /// </summary>
    public class TelerikRadNumericUpDown : CruciatusElement, IContainerElement, IListElement
    {
        private TextBox textBox;

        private Button increaseButton = new Button();

        private Button decreaseButton = new Button();

        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="TelerikRadNumericUpDown"/>.
        /// </summary>
        public TelerikRadNumericUpDown()
        {
        }

        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="TelerikRadNumericUpDown"/>.
        /// </summary>
        /// <param name="parent">
        /// Элемент, являющийся родителем для числового поля.
        /// </param>
        /// <param name="automationId">
        /// Уникальный идентификатор числового поля.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Входные параметры не должны быть нулевыми.
        /// </exception>
        public TelerikRadNumericUpDown(AutomationElement parent, string automationId)
        {
            this.Initialize(parent, automationId);
        }

        /// <summary>
        /// Возвращает значение, указывающее, включено ли текстовое поле.
        /// </summary>
        /// <exception cref="PropertyNotSupportedException">
        /// Текстовое поле не поддерживает данное свойство.
        /// </exception>
        /// <exception cref="InvalidCastException">
        /// При получении значения свойства не удалось привести его к ожидаемому типу.
        /// </exception>
        public bool IsEnabled
        {
            get
            {
                return this.GetPropertyValue<bool>(AutomationElement.IsEnabledProperty);
            }
        }

        public Button IncreaseButton
        {
            get
            {
                if (this.ElementInstance == null)
                {
                    this.Find();
                }

                return this.increaseButton;
            }
        }

        public Button DecreaseButton
        {
            get
            {
                if (this.ElementInstance == null)
                {
                    this.Find();
                }

                return this.decreaseButton;
            }
        }

        public string Text
        {
            get
            {
                if (this.ElementInstance == null)
                {
                    this.Find();
                }

                return this.textBox.Text;
            }
        }

        /// <summary>
        /// Возвращает текстовое представление имени класса.
        /// </summary>
        internal override string ClassName
        {
            get
            {
                return "TelerikRadNumericUpDown";
            }
        }

        internal override ControlType GetType
        {
            get
            {
                return ControlType.Spinner;
            }
        }

        public bool SetText(string text)
        {
            if (this.ElementInstance == null)
            {
                this.Find();
            }

            return this.textBox.SetText(text);
        }

        internal override void Find()
        {
            base.Find();

            this.textBox = new TextBox(this.ElementInstance, "textbox");
            this.increaseButton = new Button(this.ElementInstance, "increase");
            this.decreaseButton = new Button(this.ElementInstance, "decrease");
        }

        void IContainerElement.Initialize(AutomationElement parent, string automationId)
        {
            this.Initialize(parent, automationId);
        }

        void IListElement.Initialize(AutomationElement element)
        {
            this.Initialize(element);
        }
    }
}<commit_msg>[UBER-1077] Fixed setting message about last error in TelerikRadNumericUpDown.<commit_after>﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="TelerikRadNumericUpDown.cs" company="2GIS">
//   Cruciatus
// </copyright>
// <summary>
//   Представляет элемент управления числовое поле (from Telerik).
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Cruciatus.Elements
{
    using System;
    using System.Windows.Automation;

    using Cruciatus.Exceptions;
    using Cruciatus.Extensions;
    using Cruciatus.Interfaces;

    /// <summary>
    /// Представляет элемент управления числовое поле (from Telerik).
    /// </summary>
    public class TelerikRadNumericUpDown : CruciatusElement, IContainerElement, IListElement
    {
        private TextBox textBox;

        private Button increaseButton = new Button();

        private Button decreaseButton = new Button();

        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="TelerikRadNumericUpDown"/>.
        /// </summary>
        public TelerikRadNumericUpDown()
        {
        }

        /// <summary>
        /// Инициализирует новый экземпляр класса <see cref="TelerikRadNumericUpDown"/>.
        /// </summary>
        /// <param name="parent">
        /// Элемент, являющийся родителем для числового поля.
        /// </param>
        /// <param name="automationId">
        /// Уникальный идентификатор числового поля.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Входные параметры не должны быть нулевыми.
        /// </exception>
        public TelerikRadNumericUpDown(AutomationElement parent, string automationId)
        {
            this.Initialize(parent, automationId);
        }

        /// <summary>
        /// Возвращает значение, указывающее, включено ли текстовое поле.
        /// </summary>
        /// <exception cref="PropertyNotSupportedException">
        /// Текстовое поле не поддерживает данное свойство.
        /// </exception>
        /// <exception cref="InvalidCastException">
        /// При получении значения свойства не удалось привести его к ожидаемому типу.
        /// </exception>
        public bool IsEnabled
        {
            get
            {
                return this.GetPropertyValue<bool>(AutomationElement.IsEnabledProperty);
            }
        }

        public string Text
        {
            get
            {
                if (this.ElementInstance == null)
                {
                    this.Find();
                }

                return this.textBox.Text;
            }
        }

        public bool SetText(string text)
        {
            if (this.ElementInstance == null)
            {
                this.Find();
            }

            if (this.textBox.SetText(text))
            {
                return true;
            }

            // TODO: информация об ошибке должна быть более точной
            this.LastErrorMessage = string.Format("Не удалось установить текст элементу {0}.", this.ToString());
            return false;
        }

        public bool ClickIncreaseButton()
        {
            if (this.ElementInstance == null)
            {
                this.Find();
            }

            if (this.increaseButton.Click())
            {
                return true;
            }

            // TODO: информация об ошибке должна быть более точной
            this.LastErrorMessage = string.Format("Не удалось нажать по увеличивающей значение кнопке {0}.", this.ToString());
            return false;
        }

        public bool ClickDecreaseButton()
        {
            if (this.ElementInstance == null)
            {
                this.Find();
            }

            if (this.decreaseButton.Click())
            {
                return true;
            }

            // TODO: информация об ошибке должна быть более точной
            this.LastErrorMessage = string.Format("Не удалось нажать по уменьшающей значение кнопке {0}.", this.ToString());
            return false;
        }

        /// <summary>
        /// Возвращает текстовое представление имени класса.
        /// </summary>
        internal override string ClassName
        {
            get
            {
                return "TelerikRadNumericUpDown";
            }
        }

        internal override ControlType GetType
        {
            get
            {
                return ControlType.Spinner;
            }
        }

        internal override void Find()
        {
            base.Find();

            this.textBox = new TextBox(this.ElementInstance, "textbox");
            this.increaseButton = new Button(this.ElementInstance, "increase");
            this.decreaseButton = new Button(this.ElementInstance, "decrease");
        }

        void IContainerElement.Initialize(AutomationElement parent, string automationId)
        {
            this.Initialize(parent, automationId);
        }

        void IListElement.Initialize(AutomationElement element)
        {
            this.Initialize(element);
        }
    }
}
{'fraction_non_alphanumeric': 0.140788662969809, 'fraction_numerical': 0.0009242144177449168, 'mean_word_length': 1.3199142448785135, 'pattern_counts': {'":': 0, '<': 57, '<?xml version=': 0, '>': 57, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1685252', 'n_tokens_mistral': 2555, 'n_tokens_neox': 2627, 'n_words': 534}