Skip to content

bbones/diff_engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diff_engine

Описание задачи

Нужно подготовить сервис который будет расчитывать дельту данных. На вход имеем произвольный Java тип описывающий модель данных. Сервис должен принимать на вход исходное значение и отредактированное значение, по итогам своей работы он должен выдать дельту данных. Сервис должен иметь возможность принимать разные Java типы. При расчете дельты сервис должен рекурсивно расчитывать дельту для всех вложенных обьектов и списков обьектов с учетом ключевых полей. При расчете дельты должны учитыватся ключевые поля (если они такие есть в Java-типе):

  • в сравниваемых обьектах они должны быть идентичны, если неидентичны - то ошибка сравнивания
  • после расчета они должны оставаться в результате (дельте) Особые требования при расчете дельты списка:
  • если во вложенном списке не было никаких изменений - то в результате должен передаться пустой список
  • если вложенный список удалили - значит в результате имеем null
  • если были изменения в содержимом списка - то результат содержит список с изменениями
  • если имеем список примитивных типов и в нем были изменения - передаем весь измененный список

Комментарии

  • Спецификация не определяет стратегии с удаленными из списка элементами не примитивных типов.
  • Не оговаривается поведения при наличии циклических ссылок в объектах
  • Основные тесты
    • compareSpecificationObjects
    • compareSameObjects
    • compareWithExceptionKeyFieldModified
  • Остальные тесты - проверки гипотез по Reflection API
  • Тесты базируются на классах в директории тестов на основе спецификации
    • Client
    • PersonalData (расширен полем random (массив строк))
    • Address
    • Contacts

Не понял вопроса по тестированию перед сборкой - нет опыта. Запуск инсталляции в maven предварительное тестирование выполянет по умолчанию.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages