code: def test_normal(self, seed):
      dist = Normal(seed=seed)
      ll1 = dist.loglikelihood([], self.resids, self.sigma2)
      scipy_dist = stats.norm
      ll2 = scipy_dist.logpdf(
          self.resids, scale=np.sqrt(self.sigma2)
      ).sum()
      assert_almost_equal(ll1, ll2)
  
      assert_equal(dist.num_params, 0)
  
      bounds = dist.bounds(self.resids)
      assert_equal(len(bounds), 0)
  
      a, b = dist.constraints()
      assert_equal(len(a), 0)
  
      assert_array_equal(
          dist.starting_values(self.resids), np.empty((0,))
      )
  
file_path: arch/arch/tests/univariate/test_distribution.py
imports: import numpy
  from numpy.random import RandomState, default_rng
  from numpy.testing import assert_almost_equal, assert_array_equal, assert_equal
  import pytest
  from scipy.special import gamma, gammaln
  import scipy.stats
  from arch.univariate.distribution import GeneralizedError, Normal, SkewStudent, StudentsT
label_desc: Use image node_id 2 for calling the TestDistributions obj's underlying member method code with example usage: obj.test_normal(seed) without return types