code: def test_normal_onside_lower_tail_truncated():
      hd_mean = 2.0
      hd_std = 1.0
      hard_clip_min = 1.8
      hard_clip_max = None
      hd = Normal(
          hd_mean,
          hd_std,
          hard_clip_min=hard_clip_min,
          hard_clip_max=hard_clip_max,
      )
  
      samples = hd_rvs_many(hd)
  
      samples_mean = np.abs(np.mean(samples))
      assert 2.5 < samples_mean < 2.8
      samples_std = np.std(samples)
      assert 0.5 < samples_std < 0.7
      assert abs(hd.pdf(1.7) - 0.0) < 1e-6
      assert abs(hd.pdf(1.8) - 0.6750731797902921) < 1e-6
      assert abs(hd.pdf(2.0) - 0.688710562638179) < 1e-6
      assert abs(hd.pdf(2.5) - 0.607784938305487) < 1e-6
      assert abs(hd.pdf(5.0) - 0.007650883256198442) < 1e-6
      assert abs(hd.cdf(1.7) - 0.0) < 1e-6
      assert abs(hd.cdf(1.8) - 0.0) < 1e-6
      assert abs(hd.cdf(2.0) - 0.13682931532705794) < 1e-6
      assert abs(hd.cdf(2.5) - 0.46735888290117106) < 1e-6
      assert abs(hd.cdf(5.0) - 0.9976696151835984) < 1e-6
  
      assert np.all(np.array(samples) >= hard_clip_min)
      assert hd.min() == hard_clip_min
      assert hd.max() == np.inf
      assert abs(hd.mean() - 2.6750731797902922) < 1e-6
      assert abs(hd.var() - 0.4092615659697655) < 1e-6
      assert abs(hd.std() - 0.6397355437755241) < 1e-6
      # Verify that hd mean and variance also correspond to mean and variance of sampling.
      assert abs(hd.mean() - np.mean(samples)) < 1e-2
      assert abs(hd.var() - np.var(samples)) < 1e-2
  
imports: import random
  from collections import Counter
  import numpy
  import pytest
  from neuraxle.hyperparams.distributions import *
label_desc: Use image node_id 12 for calling a global function with example usage: test_normal_onside_lower_tail_truncated() without return types