почему в Hamcrest метод lessThan так работает?


(Volodymyr Valigura) #1

Проблема заключается в том что при разном количестве символов метод lessThan отрабатывает некорректно.

Я попытался сделать

MatcherAssert.assertThat("28", lessThan("123"));

Выдает ошибку:

java.lang.AssertionError: 
Expected: a value less than "123"
     but: "28" was greater than "123"

Но если сделать так:

MatcherAssert.assertThat("28", lessThan("99"));

тогда все ок.

Почему так?


(Максим Таран) #2

Есть подозрение, что это из-за того, что Вы передаёте строку. И на первом же символе оно и сыпется ибо код ‘1’ меньше, чем ‘2’.
Попробуйте сравнить так:
MatcherAssert.assertThat("28", lessThan("323"));
Предполагаю, что в данном случае отработает “как надо” :slight_smile:


(vmaximv) #3

#4

http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/number/OrderingComparison.html#lessThan(T)

Creates a matcher of Comparable object that matches when the examined object is less than the specified value, as reported by the compareTo method of the examined object.

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareTo(java.lang.String)

Compares two strings lexicographically


(Volodymyr Valigura) #5

Понял, спасибо.