from scenarios import *
scenario = (
send_stanza(""),
sequences.connection("irc.localhost", '{jid_one}/{resource_one}'),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza(""),
expect_stanza("/presence"),
expect_stanza("/message"),
send_stanza("3"),
expect_stanza("/iq[@type='result']/disco_items:query",
"count(/iq/disco_items:query/disco_items:item[@jid])=3",
"/iq/disco_items:query/rsm:set/rsm:first[@index='0']",
"/iq/disco_items:query/rsm:set/rsm:last",
after = save_value("last", lambda stanza: extract_text("/iq/disco_items:query/rsm:set/rsm:last", stanza))),
send_stanza("{last}3"),
expect_stanza("/iq[@type='result']/disco_items:query",
"count(/iq/disco_items:query/disco_items:item[@jid])=3",
"/iq/disco_items:query/rsm:set/rsm:first[@index='3']",
"/iq/disco_items:query/rsm:set/rsm:last",
after = save_value("last", lambda stanza: extract_text("/iq/disco_items:query/rsm:set/rsm:last", stanza))),
send_stanza("{last}3"),
expect_stanza("/iq[@type='result']/disco_items:query",
"count(/iq/disco_items:query/disco_items:item[@jid])=3",
"/iq/disco_items:query/rsm:set/rsm:first[@index='6']",
"/iq/disco_items:query/rsm:set/rsm:last",
after = save_value("last", lambda stanza: extract_text("/iq/disco_items:query/rsm:set/rsm:last", stanza))),
send_stanza("{last}3"),
expect_stanza("/iq[@type='result']/disco_items:query",
"count(/iq/disco_items:query/disco_items:item[@jid])=1",
"/iq/disco_items:query/rsm:set/rsm:first[@index='9']",
"/iq/disco_items:query/rsm:set/rsm:last",
"/iq/disco_items:query/rsm:set/rsm:count[text()='10']"),
send_stanza(""),
send_stanza(""),
send_stanza(""),
send_stanza(""),
send_stanza(""),
send_stanza(""),
send_stanza(""),
send_stanza(""),
send_stanza(""),
send_stanza(""),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
expect_stanza("/presence[@type='unavailable']"),
)