def test_simple(self, mymax): mapped = gentools.imap_yield(str, mymax(4)) assert next(mapped) == '4' assert mapped.send(7) == '7' assert mapped.send(3) == '7' assert gentools.sendreturn(mapped, 103) == 309
def test_simple(self, mymax): mapped = gentools.imap_send(int, mymax(4)) assert next(mapped) == 4 assert mapped.send('7') == 7 assert mapped.send(7.3) == 7 assert gentools.sendreturn(mapped, '104') == 312
def test_simple(self, mymax): mapped = gentools.imap_return(str, mymax(4)) assert next(mapped) == 4 assert mapped.send(7) == 7 assert mapped.send(4) == 7 assert gentools.sendreturn(mapped, 104) == '312'
def test_any_iterable(self, MyMax): mapped = gentools.imap_return(str, MyMax(4)) assert next(mapped) == 4 assert mapped.send(7) == 7 assert mapped.send(4) == 7 assert gentools.sendreturn(mapped, 104) == '312'
def test_any_iterable(self, MyMax): mapped = gentools.imap_send(int, MyMax(4)) assert next(mapped) == 4 assert mapped.send('7') == 7 assert mapped.send(7.3) == 7 assert gentools.sendreturn(mapped, '104') == 312
def test_oneway(self, oneway_delegator): gen = oneway_delegator(iter([1, 2, 3])) assert next(gen) == 1 assert next(gen) == 2 assert next(gen) == 3 assert gentools.sendreturn(gen, None) is None
def test_map_send(mymax): decorated = gentools.map_send(lambda x: x * 2, int)(mymax) gen = decorated(5) assert next(gen) == 5 assert gen.send(5.3) == 10 assert gen.send(9) == 18 assert gentools.sendreturn(gen, '103') == 618
def test_simple(self, delegator, mymax): gen = delegator(mymax(4)) assert next(gen) == 4 assert gen.send(7) == 7 assert gen.send(3) == 7 assert gentools.sendreturn(gen, 103) == 309
def test_throw_continues(self, delegator, mymax): gen = delegator(mymax(4)) assert next(gen) == 4 assert gen.send(7) == 7 assert gen.send(3) == 7 assert gen.throw(ValueError) == 'caught ValueError' assert gentools.sendreturn(gen, 104) == 312
def test_map_yield(mymax): decorated = gentools.map_yield(str, lambda x: x * 2)(mymax) gen = decorated(5) assert next(gen) == '10' assert gen.send(2) == '10' assert gen.send(9) == '18' assert gen.send(12) == '24' assert gentools.sendreturn(gen, 103) == 309
def test_oneyield(): @gentools.oneyield def myfunc(a, b, c): return a + b + c gen = myfunc(1, 2, 3) assert unwrap(myfunc).__name__ == 'myfunc' assert next(gen) == 6 assert gentools.sendreturn(gen, 9) == 9
def test_any_iterable(self, MyMax, try_until_positive): relayed = gentools.irelay(MyMax(4), try_until_positive) assert next(relayed) == 4 assert relayed.send(7) == 7 assert relayed.send(6) == 7 assert relayed.send(-1) == 'NOT POSITIVE!' assert relayed.send(-4) == 'NOT POSITIVE!' assert relayed.send(0) == 7 assert gentools.sendreturn(relayed, 102) == 306
def test_relay(mymax, try_until_even, try_until_positive): decorated = gentools.relay(try_until_even, try_until_positive)(mymax) gen = decorated(4) assert next(gen) == 4 assert gen.send(8) == 8 assert gen.send(9) == 'NOT EVEN!' assert gen.send(2) == 8 assert gen.send(-1) == 'NOT POSITIVE!' assert gentools.sendreturn(gen, 102) == 306
def test_accumulate(self, try_until_even, try_until_positive, mymax): gen = reduce(gentools.irelay, [try_until_even, try_until_positive], mymax(4)) assert next(gen) == 4 assert gen.send(-4) == 'NOT POSITIVE!' assert gen.send(3) == 'NOT EVEN!' assert gen.send(90) == 90 assert gentools.sendreturn(gen, 110) == 330
def test_combine_mappers(mymax, try_until_even): gen = gentools.imap_return( 'result: {}'.format, gentools.imap_send( int, gentools.imap_yield(str, gentools.irelay(mymax(4), try_until_even)))) assert next(gen) == '4' assert gen.send(3) == 'NOT EVEN!' assert gen.send('5') == 'NOT EVEN!' assert gen.send(8.4) == '8' assert gentools.sendreturn(gen, 104) == 'result: 312'
async def test_channel_create(exec): create = slack.channels.create('test channel') query = iter(create) req = next(query) assert req.method == 'POST' assert req.url.endswith('channels.create') assert req.headers['Content-Type'] == 'application/json' assert json.loads(req.content) == { 'name': 'test channel' } channel = sendreturn(query, snug.Response(200, CREATE_CHANNEL_RESPONSE)) assert isinstance(channel, slack.Channel) assert channel.id == 'C0DEL09A5'
def test_combining_decorators(mymax, try_until_even): decorators = compose( gentools.map_return('result: {}'.format), gentools.map_send(int), gentools.map_yield(str), gentools.relay(try_until_even), ) decorated = decorators(mymax) gen = decorated(4) assert next(gen) == '4' assert gen.send('6') == '6' assert gen.send('5') == 'NOT EVEN!' assert gentools.sendreturn(gen, '104') == 'result: 312' assert unwrap(decorated) is unwrap(mymax)
async def test_post_chat_message(exec): post = slack.chat.post_message('#python', 'test message') query = iter(post) req = next(query) assert req.method == 'POST' assert req.url.endswith('chat.postMessage') assert req.headers['Content-Type'] == 'application/json' assert json.loads(req.content) == { 'channel': '#python', 'text': 'test message' } msg = sendreturn(query, snug.Response(200, POST_MESSAGE_RESPONSE)) assert isinstance(msg, slack.Message) assert msg.text == 'Here\'s a message for you'
async def test_channel_list(exec): lookup = slack.channels.list_(exclude_archived=True) if live: result = await exec(lookup) assert isinstance(result.content[0], slack.Channel) query = iter(lookup) req = next(query) assert req.url.endswith('channels.list') assert req.params['exclude_archived'] == 'true' outcome = sendreturn(query, snug.Response(200, CHANNEL_LIST_RESULT)) assert isinstance(outcome[0], slack.Channel) assert len(outcome[0].members) == 2 assert outcome.next_query.cursor == "dGVhbTpDMUg5UkVTR0w="
async def test_departures(exec): departures = ns.departures(station='Amsterdam') if live: deps = await exec(departures) assert len(deps) >= 10 departure = deps[0] assert isinstance(departure, ns.Departure) # offline test query = iter(departures) req = next(query) assert req.url.endswith('avt') assert req.params == {'station': 'Amsterdam'} result = sendreturn(query, snug.Response(200, content=DEPARTURES_SAMPLE)) assert len(result) assert result[1].platform_changed
async def test_all_stations(exec): all_stations = ns.stations() if live: stations = await exec(all_stations) assert isinstance(stations, list) amsterdam_stations = [s for s in stations if s.full_name.startswith('Amsterdam')] assert len(amsterdam_stations) == 11 den_bosch = stations[0] assert den_bosch.synonyms == ["Hertogenbosch ('s)", 'Den Bosch'] # offline test query = iter(all_stations) assert next(query).url.endswith('stations-v2') result = sendreturn(query, snug.Response(200, content=STATIONS_SAMPLE)) assert len(result) == 4 assert result[3].full_name == 'Aachen Hbf'
async def test_journey_options(exec): travel_options = ns.journey_options(origin='Breda', destination='Amsterdam') travel_options_no_hsl = travel_options.replace(hsl='false') if live: options = await exec(travel_options) assert len(options) >= 10 assert isinstance(options[0], ns.Journey) # offline test query = iter(travel_options) assert next(query).params == {'fromStation': 'Breda', 'toStation': 'Amsterdam'} result = sendreturn(query, snug.Response(200, content=JOURNEYS_SAMPLE)) assert len(result) == 3 assert result[0].components[1].stops[-1].platform == '8a' assert next(iter(travel_options_no_hsl)).params == { 'fromStation': 'Breda', 'toStation': 'Amsterdam', 'hslAllowed': 'false'}
def test_ok(self, mymax): gen = mymax(4) assert next(gen) == 4 assert gentools.sendreturn(gen, 105) == 315
def test_empty(self, delegator, emptygen): gen = delegator(emptygen()) assert gentools.sendreturn(gen, None) == 99
def test_map_return(mymax): decorated = gentools.map_return(lambda s: s.center(5), str)(mymax) gen = decorated(5) assert next(gen) == 5 assert gen.send(9) == 9 assert gentools.sendreturn(gen, 103) == ' 309 '
def test_no_return(self, mymax): gen = mymax(4) assert next(gen) == 4 with pytest.raises(RuntimeError, match='did not return'): gentools.sendreturn(gen, 1)