]> git.ozlabs.org Git - ccan/blob - ccan/rune/test/run-altern-escape.c
rune: fix encoding of alternates which need escapes.
[ccan] / ccan / rune / test / run-altern-escape.c
1 #include <ccan/rune/rune.c>
2 #include <ccan/rune/coding.c>
3 #include <ccan/tal/grab_file/grab_file.h>
4 #include <ccan/tal/str/str.h>
5 #include <ccan/tap/tap.h>
6
7 int main(void)
8 {
9         static const u8 secret_zero[16];
10         struct rune *rune;
11         struct rune_restr *restr;
12         const tal_t *ctx = tal(NULL, char);
13
14         plan_tests(9);
15         restr = rune_restr_from_string(ctx, "desc=@tipjar\\|jb55@sendsats.lol",
16                                        strlen("desc=@tipjar\\|jb55@sendsats.lol"));
17         ok1(tal_count(restr->alterns) == 1);
18         ok1(restr->alterns[0]->condition == '=');
19         ok1(streq(restr->alterns[0]->fieldname, "desc"));
20         ok1(streq(restr->alterns[0]->value, "@tipjar|jb55@sendsats.lol"));
21
22         rune = rune_new(ctx, secret_zero, sizeof(secret_zero), NULL); 
23         rune_add_restr(rune, take(restr));
24
25         /* Converting via base64 should not change it! */
26         rune = rune_from_base64(ctx, rune_to_base64(ctx, rune));
27         ok1(tal_count(rune->restrs) == 1);
28         restr = rune->restrs[0];
29         ok1(tal_count(restr->alterns) == 1);
30         ok1(restr->alterns[0]->condition == '=');
31         ok1(streq(restr->alterns[0]->fieldname, "desc"));
32         ok1(streq(restr->alterns[0]->value, "@tipjar|jb55@sendsats.lol"));
33         
34         tal_free(ctx);
35         /* This exits depending on whether all tests passed */
36         return exit_status();
37 }