mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-11 22:55:54 +00:00
45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
from __future__ import absolute_import, division, print_function, unicode_literals
|
|
|
|
from ripple.util.Search import binary_search, linear_search, FIRST, LAST
|
|
|
|
from unittest import TestCase
|
|
|
|
class test_Search(TestCase):
|
|
def condition(self, i):
|
|
return 10 <= i < 15;
|
|
|
|
def test_linear_full(self):
|
|
self.assertEquals(list(linear_search(range(21), self.condition)),
|
|
[10, 11, 12, 13, 14])
|
|
|
|
def test_linear_partial(self):
|
|
self.assertEquals(list(linear_search(range(8, 14), self.condition)),
|
|
[10, 11, 12, 13])
|
|
self.assertEquals(list(linear_search(range(11, 14), self.condition)),
|
|
[11, 12, 13])
|
|
self.assertEquals(list(linear_search(range(12, 18), self.condition)),
|
|
[12, 13, 14])
|
|
|
|
def test_linear_empty(self):
|
|
self.assertEquals(list(linear_search(range(1, 4), self.condition)), [])
|
|
|
|
def test_binary_first(self):
|
|
self.assertEquals(binary_search(0, 14, self.condition, FIRST), 10)
|
|
self.assertEquals(binary_search(10, 19, self.condition, FIRST), 10)
|
|
self.assertEquals(binary_search(14, 14, self.condition, FIRST), 14)
|
|
self.assertEquals(binary_search(14, 15, self.condition, FIRST), 14)
|
|
self.assertEquals(binary_search(13, 15, self.condition, FIRST), 13)
|
|
|
|
def test_binary_last(self):
|
|
self.assertEquals(binary_search(10, 20, self.condition, LAST), 14)
|
|
self.assertEquals(binary_search(0, 14, self.condition, LAST), 14)
|
|
self.assertEquals(binary_search(14, 14, self.condition, LAST), 14)
|
|
self.assertEquals(binary_search(14, 15, self.condition, LAST), 14)
|
|
self.assertEquals(binary_search(13, 15, self.condition, LAST), 14)
|
|
|
|
def test_binary_throws(self):
|
|
self.assertRaises(
|
|
ValueError, binary_search, 0, 20, self.condition, LAST)
|
|
self.assertRaises(
|
|
ValueError, binary_search, 0, 20, self.condition, FIRST)
|