« index

Coverage for /home/spion/Documents/ircee/test/irc.js : 100%

66 lines | 66 run | 0 missing | 0 partial | 12 blocks | 12 blocks run | 0 blocks missing

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

  var Stream = require('stream'),
      IRC = require('../index.js'),
      duplex = require('duplexer'),
      split = require('split');
  
  function fakeSocket() {
      return {i:split(), o: split() };
  }
  
  function client() {
      var irc = IRC();
      irc.on('connect', function() {
          irc.use(require('../core')).login({
              nick: 'test', user: 'test', name: 'test'
          });
      });
      return irc;
  }
  
  exports.ping_pong = function(t) {
     var irc = client(), s = fakeSocket();
     t.expect(2);
     s.o.once('data', function(d) {
          t.ok(true, "nick and user data received");
          process.nextTick(function() {
              s.o.once('data', function(d) {
                  t.equals(d, 'pong :test', 'receive pong');
                  t.done();
              });
              s.i.emit('data', 'ping :test\n');
          });
      });
      s.i.pipe(irc).pipe(s.o);
      s.i.emit('connect');
  }
  
  exports.reconnect = function(t) {
     var irc = client(), s = fakeSocket();
     t.expect(2);
     s.o.once('data', function() {
         t.ok(true, "connect");
         s.i.end('432 :Error\n');
         s.i.destroy();
         var sx = fakeSocket();
         sx.o.once('data', function(d) {
             t.ok(true, "reconnect success");
             t.done();
         });
         sx.i.pipe(irc).pipe(sx.o);
     });    
     s.i.pipe(irc).pipe(s.o);
     s.i.emit('connect');
  }
  
  exports.safe_events = function(t) {
      t.expect(1);
  
      var irc = client(), s = fakeSocket();
      irc.once('irc-close', function() {
          t.ok(true, 'received safe close event');
          t.done();
      });
      s.i.pipe(irc).pipe(s.o);
      s.i.emit('data', ':nick!user@host close #channel :some text\n');
      
  }
« index | cover.io