code: def test_multiple_conditions():
      """Basic tests for properties conditioned on multiple other properties."""
  
      t = BoostBuild.Tester(
          [
              "--user-config=",
              "--ignore-site-config",
              "toolset=testToolset",
          ],
          pass_toolset=False,
          use_test_config=False,
      )
  
      t.write(
          "testToolset.jam",
          """\
  import feature ;
  feature.extend toolset : testToolset ;
  rule init ( ) { }
  """,
      )
  
      t.write(
          "testToolset.py",
          """\
  from b2.build import feature
  feature.extend('toolset', ["testToolset"])
  def init ( ): pass
  """,
      )
  
      t.write(
          "jamroot.jam",
          """\
  import feature ;
  import notfile ;
  import toolset ;
  
  feature.feature description : : free incidental ;
  feature.feature aaa : 1 0 : incidental ;
  feature.feature bbb : 1 0 : incidental ;
  feature.feature ccc : 1 0 : incidental ;
  
  rule buildRule ( name : targets ? : properties * )
  {
      for local description in [ feature.get-values description : $(properties) ]
      {
          ECHO "description:" /$(description)/ ;
      }
  }
  
  notfile testTarget1 : @buildRule : :
      <description>d
      <aaa>0:<description>a0
      <aaa>1:<description>a1
      <aaa>0,<bbb>0:<description>a0-b0
      <aaa>0,<bbb>1:<description>a0-b1
      <aaa>1,<bbb>0:<description>a1-b0
      <aaa>1,<bbb>1:<description>a1-b1
      <aaa>0,<bbb>0,<ccc>0:<description>a0-b0-c0
      <aaa>0,<bbb>0,<ccc>1:<description>a0-b0-c1
      <aaa>0,<bbb>1,<ccc>1:<description>a0-b1-c1
      <aaa>1,<bbb>0,<ccc>1:<description>a1-b0-c1
      <aaa>1,<bbb>1,<ccc>0:<description>a1-b1-c0
      <aaa>1,<bbb>1,<ccc>1:<description>a1-b1-c1 ;
  """,
      )
  
      t.run_build_system(["aaa=1", "bbb=1", "ccc=1"])
      t.expect_output_lines("description: /d/")
      t.expect_output_lines("description: /a0/", False)
      t.expect_output_lines("description: /a1/")
      t.expect_output_lines("description: /a0-b0/", False)
      t.expect_output_lines("description: /a0-b1/", False)
      t.expect_output_lines("description: /a1-b0/", False)
      t.expect_output_lines("description: /a1-b1/")
      t.expect_output_lines("description: /a0-b0-c0/", False)
      t.expect_output_lines("description: /a0-b0-c1/", False)
      t.expect_output_lines("description: /a0-b1-c1/", False)
      t.expect_output_lines("description: /a1-b0-c1/", False)
      t.expect_output_lines("description: /a1-b1-c0/", False)
      t.expect_output_lines("description: /a1-b1-c1/")
  
      t.run_build_system(["aaa=0", "bbb=0", "ccc=1"])
      t.expect_output_lines("description: /d/")
      t.expect_output_lines("description: /a0/")
      t.expect_output_lines("description: /a1/", False)
      t.expect_output_lines("description: /a0-b0/")
      t.expect_output_lines("description: /a0-b1/", False)
      t.expect_output_lines("description: /a1-b0/", False)
      t.expect_output_lines("description: /a1-b1/", False)
      t.expect_output_lines("description: /a0-b0-c0/", False)
      t.expect_output_lines("description: /a0-b0-c1/")
      t.expect_output_lines("description: /a0-b1-c1/", False)
      t.expect_output_lines("description: /a1-b0-c1/", False)
      t.expect_output_lines("description: /a1-b1-c0/", False)
      t.expect_output_lines("description: /a1-b1-c1/", False)
  
      t.run_build_system(["aaa=0", "bbb=0", "ccc=0"])
      t.expect_output_lines("description: /d/")
      t.expect_output_lines("description: /a0/")
      t.expect_output_lines("description: /a1/", False)
      t.expect_output_lines("description: /a0-b0/")
      t.expect_output_lines("description: /a0-b1/", False)
      t.expect_output_lines("description: /a1-b0/", False)
      t.expect_output_lines("description: /a1-b1/", False)
      t.expect_output_lines("description: /a0-b0-c0/")
      t.expect_output_lines("description: /a0-b0-c1/", False)
      t.expect_output_lines("description: /a0-b1-c1/", False)
      t.expect_output_lines("description: /a1-b0-c1/", False)
      t.expect_output_lines("description: /a1-b1-c0/", False)
      t.expect_output_lines("description: /a1-b1-c1/", False)
  
      t.cleanup()
  
label_desc: Use image node_id 1 for calling a global function with example usage: test_multiple_conditions() without return types