about summary refs log tree commit diff stats
path: root/tests/log/mock_log.c
blob: 8ace164a9994305422c26925b66aec2647e3f82f (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
/*
 * mock_log.c
 *
 * Copyright (C) 2012, 2013 James Booth <boothj5@gmail.com>
 *
 * This file is part of Profanity.
 *
 * Profanity is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Profanity is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Profanity.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#include <glib.h>
#include <setjmp.h>
#include <cmocka.h>

#include "log.h"

void log_init(log_level_t filter) {}
log_level_t log_get_filter(void)
{
    return (log_level_t)mock();
}
void log_reinit(void) {}
void log_close(void) {}
void log_debug(const char * const msg, ...) {}
void log_info(const char * const msg, ...) {}
void log_warning(const char * const msg, ...) {}
void log_error(const char * const msg, ...) {}
void log_msg(log_level_t level, const char * const area,
    const char * const msg) {}
char * get_log_file_location(void)
{
    return mock_ptr_type(char *);
}

log_level_t log_level_from_string(char *log_level)
{
    return (log_level_t)mock();
}

void chat_log_init(void) {}
void chat_log_chat(const gchar * const login, gchar *other,
    const gchar * const msg, chat_log_direction_t direction, GTimeVal *tv_stamp) {}
void chat_log_close(void) {}
GSList * chat_log_get_previous(const gchar * const login,
    const gchar * const recipient)
{
    return mock_ptr_type(GSList *);
}

void groupchat_log_init(void) {}
void groupchat_log_chat(const gchar * const login, const gchar * const room,
    const gchar * const nick, const gchar * const msg) {}
x">= int(r) < 0x80 func adapt(delta, numPoints: int, first: bool): int = var d = if first: delta div Damp else: delta div 2 d += d div numPoints var k = 0 while d > ((Base-TMin)*TMax) div 2: d = d div (Base - TMin) k += Base result = k + (Base - TMin + 1) * d div (d + Skew) func encode*(prefix, s: string): string {.raises: [PunyError].} = ## Encode a string that may contain Unicode. ## Prepend `prefix` to the result result = prefix var (d, n, bias) = (0, InitialN, InitialBias) var (b, remaining) = (0, 0) for r in s.runes: if r.isBasic: # basic Ascii character inc b result.add($r) else: # special character inc remaining var h = b if b > 0: result.add(Delimiter) # we have some Ascii chars while remaining != 0: var m: int = high(int32) for r in s.runes: if m > int(r) and int(r) >= n: m = int(r) d += (m - n) * (h + 1) if d < 0: raise newException(PunyError, "invalid label " & s) n = m for r in s.runes: if int(r) < n: inc d if d < 0: raise newException(PunyError, "invalid label " & s) continue if int(r) > n: continue var q = d var k = Base while true: var t = k - bias if t < TMin: t = TMin elif t > TMax: t = TMax if q < t: break result.add($encodeDigit(t + (q - t) mod (Base - t))) q = (q - t) div (Base - t) k += Base result.add($encodeDigit(q)) bias = adapt(d, h + 1, h == b) d = 0 inc h dec remaining inc d inc n func encode*(s: string): string {.raises: [PunyError].} = ## Encode a string that may contain Unicode. Prefix is empty. result = encode("", s) func decode*(encoded: string): string {.raises: [PunyError].} = ## Decode a Punycode-encoded string var n = InitialN i = 0 bias = InitialBias var d = rfind(encoded, Delimiter) var output: seq[Rune] if d > 0: # found Delimiter for j in 0..<d: var c = encoded[j] # char if not c.isBasic: raise newException(PunyError, "Encoded contains a non-basic char") output.add(Rune(c)) # add the character inc d else: d = 0 # set to first index while (d < len(encoded)): var oldi = i var w = 1 var k = Base while true: if d == len(encoded): raise newException(PunyError, "Bad input: " & encoded) var c = encoded[d]; inc d var digit = int(decodeDigit(c)) if digit > (high(int32) - i) div w: raise newException(PunyError, "Too large a value: " & $digit) i += digit * w var t: int if k <= bias: t = TMin elif k >= bias + TMax: t = TMax else: t = k - bias if digit < t: break w *= Base - t k += Base bias = adapt(i - oldi, len(output) + 1, oldi == 0) if i div (len(output) + 1) > high(int32) - n: raise newException(PunyError, "Value too large") n += i div (len(output) + 1) i = i mod (len(output) + 1) insert(output, Rune(n), i) inc i result = $output runnableExamples: static: block: doAssert encode("") == "" doAssert encode("a") == "a-" doAssert encode("A") == "A-" doAssert encode("3") == "3-" doAssert encode("-") == "--" doAssert encode("--") == "---" doAssert encode("abc") == "abc-" doAssert encode("London") == "London-" doAssert encode("Lloyd-Atkinson") == "Lloyd-Atkinson-" doAssert encode("This has spaces") == "This has spaces-" doAssert encode("ü") == "tda" doAssert encode("München") == "Mnchen-3ya" doAssert encode("Mnchen-3ya") == "Mnchen-3ya-" doAssert encode("München-Ost") == "Mnchen-Ost-9db" doAssert encode("Bahnhof München-Ost") == "Bahnhof Mnchen-Ost-u6b" block: doAssert decode("") == "" doAssert decode("a-") == "a" doAssert decode("A-") == "A" doAssert decode("3-") == "3" doAssert decode("--") == "-" doAssert decode("---") == "--" doAssert decode("abc-") == "abc" doAssert decode("London-") == "London" doAssert decode("Lloyd-Atkinson-") == "Lloyd-Atkinson" doAssert decode("This has spaces-") == "This has spaces" doAssert decode("tda") == "ü" doAssert decode("Mnchen-3ya") == "München" doAssert decode("Mnchen-3ya-") == "Mnchen-3ya" doAssert decode("Mnchen-Ost-9db") == "München-Ost" doAssert decode("Bahnhof Mnchen-Ost-u6b") == "Bahnhof München-Ost"