summary refs log tree commit diff stats
path: root/tests/stdlib/tmath.nim
blob: 581308a7ee170118525ff830899dd579945068fc (plain) (blame)
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
discard """
  action: run
  output: '''[Suite] random int

[Suite] random float

[Suite] ^

'''
"""

import math, random, os
import unittest
import sets

suite "random int":
  test "there might be some randomness":
    var set = initSet[int](128)
    randomize()
    for i in 1..1000:
      incl(set, random(high(int)))
    check len(set) == 1000
  test "single number bounds work":
    randomize()
    var rand: int
    for i in 1..1000:
      rand = random(1000)
      check rand < 1000
      check rand > -1
  test "slice bounds work":
    randomize()
    var rand: int
    for i in 1..1000:
      rand = random(100..1000)
      check rand < 1000
      check rand >= 100
  test "randomize() again gives new numbers":
    randomize()
    var rand1 = random(1000000)
    os.sleep(200)
    randomize()
    var rand2 = random(1000000)
    check rand1 != rand2


suite "random float":
  test "there might be some randomness":
    var set = initSet[float](128)
    randomize()
    for i in 1..100:
      incl(set, random(1.0))
    check len(set) == 100
  test "single number bounds work":
    randomize()
    var rand: float
    for i in 1..1000:
      rand = random(1000.0)
      check rand < 1000.0
      check rand > -1.0
  test "slice bounds work":
    randomize()
    var rand: float
    for i in 1..1000:
      rand = random(100.0..1000.0)
      check rand < 1000.0
      check rand >= 100.0
  test "randomize() again gives new numbers":
    randomize()
    var rand1:float = random(1000000.0)
    os.sleep(200)
    randomize()
    var rand2:float = random(1000000.0)
    check rand1 != rand2

suite "^":
  test "compiles for valid types":
    check: compiles(5 ^ 2)
    check: compiles(5.5 ^ 2)
    check: compiles(5.5 ^ 2.int8)
    check: compiles(5.5 ^ 2.uint)
    check: compiles(5.5 ^ 2.uint8)
    check: not compiles(5.5 ^ 2.2)
kt">char *message); /** Called after a chat room message is displayed @param barejid Jabber ID of the room @param nick nickname of the message sender @param message the received message */ void prof_post_room_message_display(const char * const barejid, const char * const nick, const char *message); /** Called before a chat room message is sent @param barejid Jabber ID of the room @param message the message to be sent @return the modified or original message to send, or NULL to cancel sending of the message */ char* prof_pre_room_message_send(const char * const barejid, const char *message); /** Called after a chat room message has been sent @param barejid Jabber ID of the room @param message the sent message */ void prof_post_room_message_send(const char * const barejid, const char *message); /** Called when the server sends a chat room history message @param barejid Jabber ID of the room @param nick nickname of the message sender @param message the message to be sent @param timestamp time the message was originally sent to the room, in ISO8601 format */ void prof_on_room_history_message(const char * const barejid, const char *const nick, const char *const message, const char *const timestamp); /** Called before a private chat room message is displayed @param barejid Jabber ID of the room @param nick nickname of message sender @param message the received message @return the new message to display, or NULL to preserve the original message */ char* prof_pre_priv_message_display(const char * const barejid, const char * const nick, const char *message); /** Called after a private chat room message is displayed @param barejid Jabber ID of the room @param nick nickname of the message sender @param message the received message */ void prof_post_priv_message_display(const char * const barejid, const char * const nick, const char *message); /** Called before a private chat room message is sent @param barejid Jabber ID of the room @param nick nickname of message recipient @param message the message to be sent @return the modified or original message to send, or NULL to cancel sending of the message */ char* prof_pre_priv_message_send(const char * const barejid, const char * const nick, const char *message); /** Called after a private chat room message has been sent @param barejid Jabber ID of the room @param nick nickname of the message recipient @param message the sent message */ void prof_post_priv_message_send(const char * const barejid, const char * const nick, const char *message); /** Called before an XMPP message stanza is sent @param stanza The stanza to send @return The new stanza to send, or NULL to preserve the original stanza */ char* prof_on_message_stanza_send(const char *const stanza); /** Called when an XMPP message stanza is received @param stanza The stanza received @return 1 if Profanity should continue to process the message stanza, 0 otherwise */ int prof_on_message_stanza_receive(const char *const stanza); /** Called before an XMPP presence stanza is sent @param stanza The stanza to send @return The new stanza to send, or NULL to preserve the original stanza */ char* prof_on_presence_stanza_send(const char *const stanza); /** Called when an XMPP presence stanza is received @param stanza The stanza received @return 1 if Profanity should continue to process the presence stanza, 0 otherwise */ int prof_on_presence_stanza_receive(const char *const stanza); /** Called before an XMPP iq stanza is sent @param stanza The stanza to send @return The new stanza to send, or NULL to preserve the original stanza */ char* prof_on_iq_stanza_send(const char *const stanza); /** Called when an XMPP iq stanza is received @param stanza The stanza received @return 1 if Profanity should continue to process the iq stanza, 0 otherwise */ int prof_on_iq_stanza_receive(const char *const stanza); /** Called when a contact goes offline @param barejid Jabber ID of the contact @param resource the resource being disconnected @param status the status message received with the offline presence, or NULL */ void prof_on_contact_offline(const char *const barejid, const char *const resource, const char *const status); /** Called when a presence notification is received from a contact @param barejid Jabber ID of the contact @param resource the resource being disconnected @param presence presence of the contact, one of "chat", "online", "away", "xa" or "dnd" @param status the status message received with the presence, or NULL @param priority the priority associated with the resource */ void prof_on_contact_presence(const char *const barejid, const char *const resource, const char *const presence, const char *const status, const int priority); /** Called when a chat window is focussed @param barejid Jabber ID of the chat window recipient */ void prof_on_chat_win_focus(const char *const barejid); /** Called when a chat room window is focussed @param barejid Jabber ID of the room */ void prof_on_room_win_focus(const char *const barejid);