diff --git a/README.md b/README.md new file mode 100644 index 0000000..b17a744 --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# Практическая работа. IYFMM Converter + +В данном практическом задании предлагается дописать существующий проект-заготовку Android приложения для осуществления конвертации единиц измерения длины. + +Советуем сначала скачать шаблон-заготовку проекта и импортировать проект в Android Studio или IntelliJ IDEA, так как процесс импорта может занимать продолжительное время. Для импорта проекта выберите пункт «Import project (Gradle, Eclipse ADT, etc.)» в окне приветствия. Детально продумайте архитектуру приложения и старайтесь следовать принципам проектирования. Измените код существующих классов и интерфейсов, добавьте новые классы, дополните разметку, ресурсы и манифест, чтобы приложение обладало следующими особенностями: + +1. Значения в полях *EditText* моментально пересчитываются при вводе пользователем некоторого числа в соответствии с единицами измерения. +2. Конвертация производится во все единицы измерения длины с номерами lower – upper включительно (см. табл. 1), значения границ интервала передаются в стартовую активность при запуске приложения. +3. Все элементы разметки должны отображаться без прокрутки. +4. Гарантируется, что всегда в интервал номеров для показа на экране попадает текстовое поле с меткой метра. Максимальное значение, вводимое в поле с метрами, указано в табл. 1. Точность проверки: 1e-5. +5. Значения элементам *TextView* присваиваются согласно значениям массива строковых ресурсов (string-array) с названием `text_view_captions`. +6. При нажатии на *TextView* текущее значение соответствующего поля *EditText* копируется в буфер обмена. + +Приложение будет запускаться в системе тестирования с дополнительными данными, которые будут отправлены в основную активность приложения; они содержат наименьший и наибольший номера необходимых текстовых полей. *TextView* и *EditText* c другими идентификаторами и тегами не должны отображаться на экране. Прокрутка не предусмотрена; не устанавливайте большие значения верхних и нижних полей у элементов разметки. Приложение будет запущено в портретной ориентации, если в манифесте не указано иное. + +Рекомендуется использовать Android Studio Bumblebee 2021.1.1. В проекте gradle version 7.4, gradle plugin version 7.1.2. + +Сдать в систему тестирования необходимо zip архив, в корневом каталоге которого располагается дополненный проект Android Studio/IntelliJ IDEA. После загрузки zip архива приложение будет запущено в системе автоматического тестирования для проверки на соответствие техническому заданию. + +Допускается использовать язык Java и/или Kotlin. При сборке проекта вcе изменения в файле build.gradle будут проигнорированы – будут использованы зависимости только из шаблона-заготовки; не изменяйте пакет приложения. + +Тестирование одной посылки может длиться до 5 минут, после завершения тестирования будет доступна информация об общем числе тестов и числе пройденных тестов. Количество посылок в систему не ограничено. Штраф за повторные попытки не начисляется. + +| № | *TextView* text (default) | *TextView* text (en) | *EditText* tag | Максимальное значение | +| :-: | - | - | - | - | +| 0 | Дюйм | Inches | `et_inch` | $10^{15}$ | +| 1 | Ярд | Yards | `et_yard` | $10^{14}$ | +| 2 | Фут | Feet | `et_foot` | $10^{14}$ | +| 3 | Миля | Miles | `et_mile` | $10^{10}$ | +| 4 | Иоттаметр | Yottametres | `et_yottametre` | $10^{3}$ | +| 5 | Зеттаметр | Zettametres | `et_zettametre` | $10^{4}$ | +| 6 | Эксаметр | Exametres | `et_exametre` | $10^{5}$ | +| 7 | Петаметр | Petametres | `et_petametre` | $10^{6}$ | +| 8 | Тераметр | Terametres | `et_terametre` | $10^{7}$ | +| 9 | Гигаметр | Gigametres | `et_gigametre` | $10^{8}$ | +| 10 | Мегаметр | Megametres | `et_megametre` | $10^{9}$ | +| 11 | Километр | Kilometres | `et_kilometre` | $10^{10}$ | +| 12 | Гектометр | Hectometres | `et_hectometre` | $10^{11}$ | +| 13 | Декаметр | Decametres | `et_decametre` | $10^{12}$ | +| 14 | Метр | Metres | `et_metre` | $10^{13}$ | +| 15 | Дециметр | Decimetres | `et_decimetre` | $10^{14}$ | +| 16 | Сантиметр | Centimetres | `et_centimetre` | $10^{15}$ | +| 17 | Миллиметр | Millimetres | `et_millimetre` | $10^{16}$ | +| 18 | Микрометр | Micrometres | `et_micrometre` | $10^{17}$ | +| 19 | Нанометр | Nanometres | `et_nanometre` | $10^{18}$ | +| 20 | Пикометр | Picometres | `et_picometre` | $10^{19}$ | +| 21 | Фемтометр | Femtometres | `et_femtometre` | $10^{20}$ | +| 22 | Аттометр | Attometres | `et_attometre` | $10^{21}$ | +| 23 | Зептометр | Zeptometres | `et_zeptometre` | $10^{22}$ | +| 24 | Иоктометр | Yoctometres | `et_yoctometre` | $10^{23}$ | + +*Таблица 1. Элементы пользовательского интерфейса* + +| № | Тест | Балл | Проверка | +| :-: | - | - | - | +| 1 | `languageTest` | 1 | Строковые ресурсы на двух языках | +| 2 | `checkClipboard` | 1 | Буфер обмена | +| 3 | `checkSmallValues` | 1 | Конвертация метров | +| 4 | `checkLargeValues` | 2 | Граничные случаи | +| 5 | `checkCrossValues` | 3 | Внесистемные единицы измерения длины | + +*Таблица 2. Критерии оценивания и тесты* + +![](/doc/screenshot.png) + +*Рис. 1. Пример итогового интерфейса (планшет)* \ No newline at end of file