используя утверждения в неупорядоченной коллекции - PullRequest
1 голос
/ 17 июня 2019

Я вставляю Collection<Event> в таблицу, что-то вроде этого

Collection<Event> eventCollection = service.insert(events);

Теперь мне нужно проверить, что Event s в eventCollection имеет определенные атрибуты. Я не уверен насчет порядка, в котором Event s хранятся в eventCollection. В настоящее время я так делаю утверждения.

assertTrue(
        Iterables.get(eventCollection, 0).getPojo.getField1()
            .equals("Some Value") &&
            Iterables.get(eventCollection, 0).getPojo.getField2()
            .equals("Some Value") &&
            Iterables.get(eventCollection, 0).getPojo.getField3()
            .equals("Some Value") &&                
            Iterables.get(eventCollection, 1).getPojo.getField1()
            .equals("Some Value") &&
            eventCollection, 1).getPojo.getField2()
            .equals("Some Value") &&
            Iterables.get(eventCollection, 1).getPojo.getField3()
            .equals("Some Value"))
    );

Я знаю, что в eventCollection есть два элемента, но я не уверен, в каком порядке они находятся. Iterables.get, кажется, работает нормально, но мне интересно, есть ли какой-нибудь более простой / короткий способ сделать это это используя поток API?

Редактировать: "Some Value" не всегда относится к String.

1 Ответ

1 голос
/ 17 июня 2019

Для максимальной ясности я бы предложил инкапсулировать предикат низкого уровня в вспомогательный метод и использовать Stream.allMatch для выполнения проверки.

Вспомогательная функция (предполагается помещенная в класс Context, точное местоположение не имеет значения):

public static boolean expectedValues(Event event) {
    return event.getPojo().getField1().equals("Some Value") &&
            event.getPojo().getField2().equals("Some Value") &&
            event.getPojo().getField3().equals("Some Value");
}

Фактическая проверка, которая действительно намного более очевидна:

assertTrue(eventCollection.stream().allMatch(Context::expectedValues));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...