1,2 $ me
4 $ joining: baz!~baz@baz.baz
+# join second channel with partial residents identity to compare distribution of resident-specific messages
+> /join #testtest
+2 > JOIN :#testtest
+2 < :foo!~foobarbaz@baz.bar.foo JOIN #testtest
+2 < :foo.bar.baz 353 foo @ #testtest :foo baz
+1,2 $ channels:#testtest:exits cleared
+2 < :foo.bar.baz 366 foo #testtest :End of /NAMES list.
+1,2 $ channels:#testtest:user_ids set to:
+1,2 $ 2
+1,2 $ me
+5 $ residents: baz, foo
+
# handle non-self renaming
2 < :baz!~baz@baz.baz NICK :bazbaz
1,2 $ users:2:nick set to: [bazbaz]
-4 $ baz!~baz@baz.baz renames bazbaz
+4,5 $ baz!~baz@baz.baz renames bazbaz
-# handle non-self PART
+# handle non-self PART in one of two inhabited channels, preserve identity into re-JOIN
2 < :bazbaz!~baz@baz.baz PART :#test
1,2 $ channels:#test:exits:2 set to: [P]
1,2 $ channels:#test:user_ids set to:
1,2 $ me
4 $ parts: bazbaz!~baz@baz.baz
1,2 $ channels:#test:exits:2 cleared
-1,2 $ users:2 cleared
-
-# handle re-join, treat as new user for lack of identity continuity reliability
2 < :bazbaz!~baz@baz.baz JOIN :#test
-1,2 $ users:3:nick set to: [?]
-1,2 $ users:3:nick set to: [bazbaz]
-1,2 $ users:3:user set to: [~baz]
-1,2 $ users:3:host set to: [baz.baz]
1,2 $ channels:#test:user_ids set to:
1,2 $ 1
-1,2 $ 3
+1,2 $ 2
1,2 $ me
4 $ joining: bazbaz!~baz@baz.baz
+# handle non-self PART in only inhabited channel, lose identity, re-join as new identity
+2 < :bar!~bar@bar.bar PART :#test
+1,2 $ channels:#test:exits:1 set to: [P]
+1,2 $ channels:#test:user_ids set to:
+1,2 $ 2
+1,2 $ me
+4 $ parts: bar!~bar@bar.bar
+1,2 $ channels:#test:exits:1 cleared
+1,2 $ users:1 cleared
+2 < :bar!~bar@bar.bar JOIN :#test
+1,2 $ users:3:nick set to: [?]
+1,2 $ users:3:nick set to: [bar]
+1,2 $ users:3:user set to: [~bar]
+1,2 $ users:3:host set to: [bar.bar]
+1,2 $ channels:#test:user_ids set to:
+1,2 $ 2
+1,2 $ 3
+1,2 $ me
+4 $ joining: bar!~bar@bar.bar
+
# handle non-self QUIT
2 < :bazbaz!~baz@baz.baz QUIT :Client Quit
, $ bazbaz!~baz@baz.baz quits: Client Quit
-1,2 $ channels:#test:exits:3 set to: [QClient Quit]
+1,2 $ channels:#test:exits:2 set to: [QClient Quit]
1,2 $ channels:#test:user_ids set to:
-1,2 $ 1
+1,2 $ 3
1,2 $ me
4 $ quits: bazbaz!~baz@baz.baz: Client Quit
-1,2 $ channels:#test:exits:3 cleared
-1,2 $ users:3 cleared
+1,2 $ channels:#test:exits:2 cleared
+1,2 $ channels:#testtest:exits:2 set to: [QClient Quit]
+1,2 $ channels:#testtest:user_ids set to:
+1,2 $ me
+5 $ quits: bazbaz!~baz@baz.baz: Client Quit
+1,2 $ channels:#testtest:exits:2 cleared
+1,2 $ users:2 cleared
# handle self-PART: clear channel, and its squatters
2 < :foo!~foobarbaz@baz.bar.foo PART :#test
1,2 $ channels:#test:exits:me set to: [P]
1,2 $ channels:#test:user_ids set to:
-1,2 $ 1
+1,2 $ 3
4 $ parts: foo!~foobarbaz@baz.bar.foo
1,2 $ channels:#test:exits:me cleared
1,2 $ channels:#test cleared
-1,2 $ users:1 cleared
+1,2 $ users:3 cleared
# handle /disconnect, clear all
> /disconnect
1,2 $ requesting disconnect …
2 > QUIT :ircplom says bye
2 < :foo!~foobarbaz@baz.bar.foo QUIT :Client Quit
-1,2,3,4 $ foo!~foobarbaz@baz.bar.foo quits: Client Quit
+1,2,3,4,5 $ foo!~foobarbaz@baz.bar.foo quits: Client Quit
+1,2 $ channels:#testtest:exits:me set to: [QClient Quit]
+1,2 $ channels:#testtest:user_ids set to:
+5 $ quits: foo!~foobarbaz@baz.bar.foo: Client Quit
+1,2 $ channels:#testtest:exits:me cleared
2 < ERROR :Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]
-1,2,3,4 $ connection_state set to: [Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]]
-1,2,3,4 $ connection_state set to: []
+1,2,3,4,5 $ connection_state set to: [Closing link: (~foobarbaz@baz.bar.foo) [Quit: ircplom says bye]]
+1,2,3,4,5 $ connection_state set to: []
1,2 $ isupport cleared
1,2 $ isupport:CHANTYPES set to: [#&]
1,2 $ isupport:PREFIX set to: [(ov)@+]
# check that (save TUI tests assuming start on window 0, and no 4 yet) on reconnect, all the same effects can be expected
> /reconnect
-1,2,3,4 $ connection_state set to: [connecting]
-1,2,3,4 $ connection_state set to: [connected]
+1,2,3,4,5 $ connection_state set to: [connecting]
+1,2,3,4,5 $ connection_state set to: [connected]
repeat 64:147
-repeat 158:295
+repeat 158:328
> /quit
0 <