@@ -228,6 +228,34 @@ describe('generateEquation (Vensim -> C)', () => {
228228 expect ( genC ( vars . get ( '_y' ) ) ) . toEqual ( [ '_y = _IF_THEN_ELSE(!_z, 1.0, 0.0);' ] )
229229 } )
230230
231+ it ( 'should work for conditional expression with reference to dimension' , ( ) => {
232+ const vars = readInlineModel ( `
233+ DimA: A1, A2 ~~|
234+ x = 1 ~~|
235+ y[DimA] = IF THEN ELSE(DimA = x, 1, 0) ~~|
236+ ` )
237+ expect ( vars . size ) . toBe ( 2 )
238+ expect ( genC ( vars . get ( '_x' ) ) ) . toEqual ( [ '_x = 1.0;' ] )
239+ expect ( genC ( vars . get ( '_y' ) ) ) . toEqual ( [
240+ 'for (size_t i = 0; i < 2; i++) {' ,
241+ '_y[i] = _IF_THEN_ELSE((i + 1) == _x, 1.0, 0.0);' ,
242+ '}'
243+ ] )
244+ } )
245+
246+ it ( 'should work for conditional expression with reference to dimension and subscript/index' , ( ) => {
247+ const vars = readInlineModel ( `
248+ DimA: A1, A2 ~~|
249+ y[DimA] = IF THEN ELSE(DimA = A2, 1, 0) ~~|
250+ ` )
251+ expect ( vars . size ) . toBe ( 1 )
252+ expect ( genC ( vars . get ( '_y' ) ) ) . toEqual ( [
253+ 'for (size_t i = 0; i < 2; i++) {' ,
254+ '_y[i] = _IF_THEN_ELSE((i + 1) == 2, 1.0, 0.0);' ,
255+ '}'
256+ ] )
257+ } )
258+
231259 it ( 'should work for data variable definition' , ( ) => {
232260 const extData : ExtData = new Map ( [
233261 [
0 commit comments