about summary refs log tree commit diff stats
path: root/translate_mu_baremetal
blob: 66b27b231415dc4840d6113715fc994459fb7b6f (plain) (blame)
1
2
3
4
5
6
7
8
9
#!/bin/sh
# Translate a given Mu program to 'baremetal', a raw disk image that can boot
# and run without any OS.

set -e

cat $* baremetal/[0-9]*.mu    |apps/mu    > a.subx

./translate_subx_baremetal baremetal/mu-init.subx baremetal/[0-9]*.subx a.subx
6b61661cbbe2828b'>^
3a403046 ^
eb5b04df ^
527e739a ^
954661e5 ^
527e739a ^
eb5b04df ^

3a403046 ^
eb5b04df ^
527e739a ^
0b2a1a1b ^
f5338158 ^
3a403046 ^
f5338158 ^
527e739a ^
0b2a1a1b ^
eb5b04df ^

3a403046 ^
eb5b04df ^
527e739a ^
545a23e9 ^
954661e5 ^
eb5b04df ^
a9a860cb ^
f5338158 ^
527e739a ^
eb5b04df ^

3a403046 ^
eb5b04df ^
527e739a ^
545a23e9 ^

954661e5 ^
eb5b04df ^
3a403046 ^
6bad38c2 ^
527e739a ^
eb5b04df ^

3a403046 ^
eb5b04df ^
527e739a ^
545a23e9 ^

954661e5 ^

eb5b04df ^
3a403046 ^
6bad38c2 ^
527e739a ^
eb5b04df ^

3a403046 ^
4be250ae ^
527e739a ^
545a23e9 ^

0b2a1a1b ^
4be250ae ^
3a403046 ^
4be250ae ^
527e739a ^
0b2a1a1b ^
4be250ae ^

3a403046 ^
4be250ae ^
527e739a ^
545a23e9 ^

0b2a1a1b ^
4be250ae ^
3a403046 ^
4be250ae ^
527e739a ^
0b2a1a1b ^
4be250ae ^

3a403046 ^
4be250ae ^
527e739a ^
545a23e9 ^

0b2a1a1b ^
4be250ae ^




3a403046 ^
4be250ae ^
527e739a ^
0b2a1a1b ^
4be250ae ^
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
                 




                   

                    
                               
 
                              
 

                                         

 
                                     
 


                                         

 
                                    
 
                                         
                                             
                           

 
                                                
 
                                         
                                                  
 
                        
 
                           
                                      

 
                                       
 
                                         
                                  
                                                          
 
                                         
 
                           

 
                                                     
 
                                         

                                  
                                                          
 
                                         
 
                           

 
                                                      
 
                                         

                                  

                                                             
 
                                         
 
                           

 
                                   
 
                                         

                                  
                                                  
 
                                                
 
                           
                                      

 
                                        
 
                                         

                                  
                                                  
 
                                                
 
                           
                                      

 
                                       
 
                                         

                                  
                                                  




                                           
                                      
 
                           
                                      
 
#include <glib.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include <stdlib.h>

#include "contact.h"
#include "tools/autocomplete.h"

void clear_empty(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_clear(ac);
}

void reset_after_create(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_reset(ac);
    autocomplete_clear(ac);
}

void find_after_create(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_complete(ac, "hello", TRUE);
    autocomplete_clear(ac);
}

void get_after_create_returns_null(void **state)
{
    Autocomplete ac = autocomplete_new();
    GSList *result = autocomplete_create_list(ac);

    assert_null(result);

    autocomplete_clear(ac);
    g_slist_free_full(result, g_free);
}

void add_one_and_complete(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_add(ac, "Hello");
    char *result = autocomplete_complete(ac, "Hel", TRUE);

    assert_string_equal("Hello", result);

    autocomplete_clear(ac);
}

void add_two_and_complete_returns_first(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_add(ac, "Hello");
    autocomplete_add(ac, "Help");
    char *result = autocomplete_complete(ac, "Hel", TRUE);

    assert_string_equal("Hello", result);

    autocomplete_clear(ac);
}

void add_two_and_complete_returns_second(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_add(ac, "Hello");
    autocomplete_add(ac, "Help");
    char *result1 = autocomplete_complete(ac, "Hel", TRUE);
    char *result2 = autocomplete_complete(ac, result1, TRUE);

    assert_string_equal("Help", result2);

    autocomplete_clear(ac);
}

void add_two_adds_two(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_add(ac, "Hello");
    autocomplete_add(ac, "Help");
    GSList *result = autocomplete_create_list(ac);

    assert_int_equal(2, g_slist_length(result));

    autocomplete_clear(ac);
    g_slist_free_full(result, g_free);
}

void add_two_same_adds_one(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_add(ac, "Hello");
    autocomplete_add(ac, "Hello");
    GSList *result = autocomplete_create_list(ac);

    assert_int_equal(1, g_slist_length(result));

    autocomplete_clear(ac);
    g_slist_free_full(result, g_free);
}

void add_two_same_updates(void **state)
{
    Autocomplete ac = autocomplete_new();
    autocomplete_add(ac, "Hello");
    autocomplete_add(ac, "Hello");
    GSList *result = autocomplete_create_list(ac);

    GSList *first = g_slist_nth(result, 0);

    char *str = first->data;

    assert_string_equal("Hello", str);

    autocomplete_clear(ac);
    g_slist_free_full(result, g_free);
}