github.com/gotranspile/cxgo@v0.3.7/bools_test.go (about) 1 package cxgo 2 3 import "testing" 4 5 var casesTranslateBools = []parseCase{ 6 { 7 name: "stdbool override", 8 src: ` 9 #include <stdbool.h> 10 11 void foo() { 12 bool a = true; 13 if (a) {} 14 } 15 `, 16 exp: ` 17 func foo() { 18 var a bool = true 19 if a { 20 } 21 } 22 `, 23 }, 24 { 25 name: "if int", 26 src: ` 27 void foo() { 28 int a; 29 if (a) return; 30 } 31 `, 32 exp: ` 33 func foo() { 34 var a int32 35 if a != 0 { 36 return 37 } 38 } 39 `, 40 }, 41 { 42 name: "if not int", 43 src: ` 44 void foo() { 45 int a; 46 if (!a) return; 47 } 48 `, 49 exp: ` 50 func foo() { 51 var a int32 52 if a == 0 { 53 return 54 } 55 } 56 `, 57 }, 58 { 59 name: "if int eq", 60 src: ` 61 void foo() { 62 int a; 63 if (a == 1) return; 64 } 65 `, 66 exp: ` 67 func foo() { 68 var a int32 69 if a == 1 { 70 return 71 } 72 } 73 `, 74 }, 75 { 76 name: "if bool eq int 0", 77 src: ` 78 #include <stdbool.h> 79 void foo() { 80 bool a; 81 if (a == 0) return; 82 } 83 `, 84 exp: ` 85 func foo() { 86 var a bool 87 if !a { 88 return 89 } 90 } 91 `, 92 }, 93 { 94 name: "if bool neq int 0", 95 src: ` 96 #include <stdbool.h> 97 void foo() { 98 bool a; 99 if (a != 0) return; 100 } 101 `, 102 exp: ` 103 func foo() { 104 var a bool 105 if a { 106 return 107 } 108 } 109 `, 110 }, 111 { 112 name: "typedef bool", 113 src: ` 114 typedef int bool; 115 116 void foo() { 117 bool a = 1; 118 } 119 `, 120 exp: ` 121 type bool int32 122 123 func foo() { 124 var a bool = 1 125 _ = a 126 } 127 `, 128 }, 129 { 130 name: "bool include", 131 src: ` 132 #include <stdbool.h> 133 134 void foo() { 135 bool a = 1; 136 } 137 `, 138 exp: ` 139 func foo() { 140 var a bool = true 141 _ = a 142 } 143 `, 144 }, 145 { 146 name: "bool -> int", 147 inc: `#include <stdbool.h>`, 148 src: ` 149 void foo() { 150 bool a; 151 int b; 152 b = a; 153 } 154 `, 155 exp: ` 156 func foo() { 157 var ( 158 a bool 159 b int32 160 ) 161 _ = b 162 b = libc.BoolToInt(a) 163 } 164 `, 165 }, 166 { 167 name: "add int to bool", 168 src: ` 169 int foo(int a) { 170 int b; 171 b = (a <= 0) + 0x7FFFFFFF; 172 return b; 173 } 174 `, 175 exp: ` 176 func foo(a int32) int32 { 177 var b int32 178 b = libc.BoolToInt(a <= 0) + math.MaxInt32 179 return b 180 } 181 `, 182 }, 183 { 184 name: "bool arithm", 185 src: ` 186 #include <stdbool.h> 187 188 void foo() { 189 bool a; 190 int b; 191 b = -a - (a - 1); 192 } 193 `, 194 exp: ` 195 func foo() { 196 var ( 197 a bool 198 b int32 199 ) 200 _ = b 201 b = -libc.BoolToInt(a) - (libc.BoolToInt(a) - 1) 202 } 203 `, 204 }, 205 } 206 207 func TestBools(t *testing.T) { 208 runTestTranslate(t, casesTranslateBools) 209 }