@@ -347,8 +347,14 @@ def nonempty_crossjoin_from_cube(cube_name)
347347 as ( "CASE 1 WHEN 1 THEN ([Measures].[one], [Gender].[F]) ELSE ([Measures].[two], [Gender].[M]) END" ) .
348348 with_member ( '[Measures].[Case 4]' ) .
349349 as ( "CASE 1 WHEN 1 THEN ([Measures].[one], [Gender].[F]) ELSE 2 END" ) .
350- columns ( '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' ) . execute .
351- values . should == [ 1 , 1 , 1 , 1 ]
350+ with_member ( '[Measures].[Case 5]' ) .
351+ as ( "CASE 1 WHEN 1 THEN [Measures].[one] ELSE ([Measures].[two], [Gender].[F]) END" ) .
352+ with_member ( '[Measures].[Case 6]' ) .
353+ as ( "CASE 2 WHEN 2 THEN ([Measures].[two], [Gender].[F]) ELSE [Measures].[one] END" ) .
354+ columns (
355+ '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' , '[Measures].[Case 5]' ,
356+ '[Measures].[Case 6]'
357+ ) . execute . values . should == [ 1 , 1 , 1 , 1 , 1 , 2 ]
352358 end
353359
354360 it "should return member or tuple as result" do
@@ -365,7 +371,22 @@ def nonempty_crossjoin_from_cube(cube_name)
365371 as ( "CASE 2 WHEN 1 THEN ([Measures].[one], [Gender].[F]) ELSE ([Measures].[two], [Gender].[M]) END.Item(0).Name" ) .
366372 columns ( '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' ) . execute .
367373 values . should == [ 'one' , 'two' , 'one' , 'two' ]
368- end
374+ end
375+
376+ it "should allow members and NULLs as scalar result values" do
377+ @olap . from ( 'Sales' ) .
378+ with_member ( '[Measures].[one]' ) . as ( '1' ) .
379+ with_member ( '[Measures].[Case 1]' ) .
380+ as ( "CASE 1 WHEN 1 THEN NULL ELSE [Measures].[one] END" ) .
381+ with_member ( '[Measures].[Case 2]' ) .
382+ as ( "CASE 2 WHEN 1 THEN NULL ELSE [Measures].[one] END" ) .
383+ with_member ( '[Measures].[Case 3]' ) .
384+ as ( "CASE 1 WHEN 1 THEN [Measures].[one] ELSE NULL END" ) .
385+ with_member ( '[Measures].[Case 4]' ) .
386+ as ( "CASE 2 WHEN 1 THEN [Measures].[one] ELSE NULL END" ) .
387+ columns ( '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' ) . execute .
388+ values . should == [ nil , 1 , 1 , nil ]
389+ end
369390 end
370391
371392 describe "CASE test statement" do
@@ -403,8 +424,14 @@ def nonempty_crossjoin_from_cube(cube_name)
403424 as ( "CASE WHEN 1 = 1 THEN ([Measures].[one], [Gender].[F]) ELSE ([Measures].[two], [Gender].[M]) END" ) .
404425 with_member ( '[Measures].[Case 4]' ) .
405426 as ( "CASE WHEN 1 = 1 THEN ([Measures].[one], [Gender].[F]) ELSE 2 END" ) .
406- columns ( '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' ) . execute .
407- values . should == [ 1 , 1 , 1 , 1 ]
427+ with_member ( '[Measures].[Case 5]' ) .
428+ as ( "CASE WHEN 1 = 1 THEN [Measures].[one] ELSE ([Measures].[two], [Gender].[F]) END" ) .
429+ with_member ( '[Measures].[Case 6]' ) .
430+ as ( "CASE WHEN 2 = 2 THEN ([Measures].[two], [Gender].[F]) ELSE [Measures].[one] END" ) .
431+ columns (
432+ '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' , '[Measures].[Case 5]' ,
433+ '[Measures].[Case 6]'
434+ ) . execute . values . should == [ 1 , 1 , 1 , 1 , 1 , 2 ]
408435 end
409436
410437 it "should return member or tuple as result" do
@@ -422,6 +449,21 @@ def nonempty_crossjoin_from_cube(cube_name)
422449 columns ( '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' ) . execute .
423450 values . should == [ 'one' , 'two' , 'one' , 'two' ]
424451 end
452+
453+ it "should allow members and NULLs as scalar result values" do
454+ @olap . from ( 'Sales' ) .
455+ with_member ( '[Measures].[one]' ) . as ( '1' ) .
456+ with_member ( '[Measures].[Case 1]' ) .
457+ as ( "CASE WHEN 1 = 1 THEN NULL ELSE [Measures].[one] END" ) .
458+ with_member ( '[Measures].[Case 2]' ) .
459+ as ( "CASE WHEN 1 = 2 THEN NULL ELSE [Measures].[one] END" ) .
460+ with_member ( '[Measures].[Case 3]' ) .
461+ as ( "CASE WHEN 1 = 1 THEN [Measures].[one] ELSE NULL END" ) .
462+ with_member ( '[Measures].[Case 4]' ) .
463+ as ( "CASE WHEN 1 = 2 THEN [Measures].[one] ELSE NULL END" ) .
464+ columns ( '[Measures].[Case 1]' , '[Measures].[Case 2]' , '[Measures].[Case 3]' , '[Measures].[Case 4]' ) . execute .
465+ values . should == [ nil , 1 , 1 , nil ]
466+ end
425467 end
426468
427469 describe "Generate" do
0 commit comments