class_docstr: Unit tests for QLearning.
class_docstr_tok: ["Unit","tests","for","QLearning","."]
code: def test_init_dueling_dqn(self, mock_parameters, mock_model):
      self._setup_parameters(mock_parameters.return_value)
      mock_parameters.return_value.q_representation = "dueling-dqn"
      mock_parameters.return_value.hidden_layers = "[2, [2], [2]]"
      mock_model.return_value = self._setup_test_model()
  
      action_space = spaces.Discrete(2)
      observation_space = spaces.Box(0, 1, (1,))
      sut = QLearning("", observation_space, action_space)
  
      self.assertEqual(sut._num_actions, 2)
      self.assertIsNone(sut._num_states)
      self.assertEqual(sut._shape_of_inputs, (1,))
      self.assertFalse(sut._discrete_observation_space)
      self.assertIsNone(sut._space_discretizer)
      self.assertIsNone(sut._preprocessor)
      mock_model.assert_called_with((1,), 2, "[2, [2], [2]]", None)
  
imports: import unittest
  import cntk.contrib.deeprl.tests.spaces
  import numpy
  from cntk.contrib.deeprl.agent.qlearning import QLearning
  from cntk.contrib.deeprl.agent.shared.cntk_utils import huber_loss
  from cntk.contrib.deeprl.agent.shared.replay_memory import _Transition
  from cntk.layers import Dense
  from cntk.losses import squared_error
  from cntk.ops import input_variable
label_desc: Use image node_id 4 for calling the QLearningTest obj's underlying member method code with example usage: obj.test_init_dueling_dqn(mock_parameters, mock_model) without return types