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  }