<s> import unittest <EOL> from rx . observable import Observable <EOL> from rx . testing import TestScheduler , ReactiveTest <EOL> on_next = ReactiveTest . on_next <EOL> on_completed = ReactiveTest . on_completed <EOL> on_error = ReactiveTest . on_error <EOL> subscribe = ReactiveTest . subscribe <EOL> subscribed = ReactiveTest . subscribed <EOL> disposed = ReactiveTest . disposed <EOL> created = ReactiveTest . created <EOL> class TestTake ( unittest . TestCase ) : <EOL> def test_take_complete_after ( self ) : <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_completed ( <NUM_LIT> ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT:20> ) <EOL> results = scheduler . start ( create ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_completed ( <NUM_LIT> ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) <EOL> def test_take_complete_same ( self ) : <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_completed ( <NUM_LIT> ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT> ) <EOL> results = scheduler . start ( create ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_completed ( <NUM_LIT> ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) <EOL> def test_take_complete_before ( self ) : <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_completed ( <NUM_LIT> ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT:10> ) <EOL> results = scheduler . start ( create ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_completed ( <NUM_LIT> ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) <EOL> def test_take_error_after ( self ) : <EOL> ex = '<STR_LIT>' <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_error ( <NUM_LIT> , ex ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT:20> ) <EOL> results = scheduler . start ( create ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_error ( <NUM_LIT> , ex ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) <EOL> def test_take_error_same ( self ) : <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_error ( <NUM_LIT> , '<STR_LIT>' ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT> ) <EOL> results = scheduler . start ( create ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_completed ( <NUM_LIT> ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) <EOL> def test_take_error_before ( self ) : <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) , on_error ( <NUM_LIT> , '<STR_LIT>' ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT:3> ) <EOL> results = scheduler . start ( create ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_completed ( <NUM_LIT> ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) <EOL> def test_take_dispose_before ( self ) : <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT:3> ) <EOL> results = scheduler . start ( create , disposed = <NUM_LIT> ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) <EOL> def test_take_dispose_after ( self ) : <EOL> scheduler = TestScheduler ( ) <EOL> xs = scheduler . create_hot_observable ( on_next ( <NUM_LIT> , <NUM_LIT:6> ) , on_next ( <NUM_LIT> , <NUM_LIT:4> ) , on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_next ( <NUM_LIT> , <NUM_LIT:1> ) , on_next ( <NUM_LIT> , - <NUM_LIT:1> ) , on_next ( <NUM_LIT> , <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:8> ) , on_next ( <NUM_LIT> , <NUM_LIT:11> ) , on_next ( <NUM_LIT> , <NUM_LIT:15> ) , on_next ( <NUM_LIT> , <NUM_LIT:16> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:32> ) , on_next ( <NUM_LIT> , - <NUM_LIT:100> ) , on_next ( <NUM_LIT> , - <NUM_LIT:3> ) , on_next ( <NUM_LIT> , <NUM_LIT:5> ) , on_next ( <NUM_LIT> , <NUM_LIT:10> ) ) <EOL> def create ( ) : <EOL> return xs . take ( <NUM_LIT:3> ) <EOL> results = scheduler . start ( create , disposed = <NUM_LIT> ) <EOL> results . messages . assert_equal ( on_next ( <NUM_LIT> , <NUM_LIT:9> ) , on_next ( <NUM_LIT> , <NUM_LIT> ) , on_next ( <NUM_LIT> , <NUM_LIT:7> ) , on_completed ( <NUM_LIT> ) ) <EOL> xs . subscriptions . assert_equal ( subscribe ( <NUM_LIT:200> , <NUM_LIT> ) ) </s>
