def METHOD_NAME(self):
    """Comparable to tests/mechanisms/test_recurrent_transfer_mechanism/test_learning_of_orthognal_inputs
    Tests that ContrastiveHebbianMechanism behaves like RecurrentTransferMechanism with Hebbian LearningFunction
    (allowing for epsilon differences due CONVERGENCE CRITERION).
    """
    size=4
    R = pnl.ContrastiveHebbianMechanism(
            input_size=4,
            hidden_size=0,
            target_size=4,
            mode=pnl.SIMPLE_HEBBIAN,
            enable_learning=True,
            integrator_mode=False,
            function=psyneulink.core.components.functions.nonstateful.transferfunctions.Linear,
            learning_function=psyneulink.core.components.functions.nonstateful.learningfunctions.Hebbian,
            minus_phase_termination_threshold=.01,
            plus_phase_termination_threshold=.01,
            # auto=0,
            hetero=np.full((size,size),0.0)
    )
    C = pnl.Composition()
    C.add_node(R)
    inputs_dict = {R:[1,0,1,0]}
    C.learn(num_trials=4,
          inputs=inputs_dict)
    # KDM 10/2/18: removing this test from here, as it's kind of unimportant to this specific test
    #   and the behavior of the scheduler's time can be a bit odd - should hopefully fix that in future
    #   and test in its own module
    # assert S.scheduler.get_clock(S).previous_time.pass_ == 6
    np.testing.assert_allclose(R.output_ports[pnl.ACTIVITY_DIFFERENCE].parameters.value.get(C),
                               [1.20074767, 0.0, 1.20074767, 0.0])
    np.testing.assert_allclose(R.parameters.plus_phase_activity.get(C), [1.20074767, 0.0, 1.20074767, 0.0])
    np.testing.assert_allclose(R.parameters.minus_phase_activity.get(C), [0.0, 0.0, 0.0, 0.0])
    np.testing.assert_allclose(R.output_ports[pnl.CURRENT_ACTIVITY].parameters.value.get(C),
                               [1.20074767, 0.0, 1.20074767, 0.0])
    np.testing.assert_allclose(
        R.recurrent_projection.get_mod_matrix(C),
        [
            [0.0,         0.0,         0.2399363,  0.0 ],
            [0.0,         0.0,         0.0,       0.0  ],
            [0.2399363,    0.0,         0.0,       0.0 ],
            [0.0,         0.0,         0.0,       0.0  ]
        ]
    )
    # Reset state so learning of new pattern is "uncontaminated" by activity from previous one
    R.output_port.parameters.value.set([0, 0, 0, 0], C, override=True)
    inputs_dict = {R:[0,1,0,1]}
    C.learn(num_trials=4,
          inputs=inputs_dict)
    np.testing.assert_allclose(
        R.recurrent_projection.get_mod_matrix(C),
        [
            [0.0,        0.0,        0.2399363,   0.0      ],
            [0.0,        0.0,        0.0,        0.2399363 ],
            [0.2399363,   0.0,        0.0,        0.0      ],
            [0.0,        0.2399363,   0.0,        0.0      ]
        ]
    )
    np.testing.assert_allclose(R.output_ports[pnl.ACTIVITY_DIFFERENCE].parameters.value.get(C),
                               [0.0, 1.20074767, 0.0, 1.20074767])
    np.testing.assert_allclose(R.parameters.plus_phase_activity.get(C), [0.0, 1.20074767, 0.0, 1.20074767])
    np.testing.assert_allclose(R.parameters.minus_phase_activity.get(C), [0.0, 0.0, 0.0, 0.0])