### Question:
Impression implements Serializable { public long countImpressions(double price, TargetingChannel.PriceModel priceModel) { long result = 0; if (price == BookingService.HIGH_PRICE) { result = this.getTotal(); } else { int priceCategory = CommonUtil.determinePriceCat(price, priceModel); result = getCountByPriceCategory(priceCategory); } LOGGER.debug("impressions={}", result); return result; } Impression();  Impression(H0 h0, H1 h1, H2 h2, H3 h3);  Impression(Double[] dayCounts);  Impression(double[] dayCounts);  Impression(Map map); Long getTotal(); double getValueForHIndex(int h_index); long countImpressions(double price, TargetingChannel.PriceModel priceModel); H1 getH1(); void setH1(H1 h1); H0 getH0(); void setH0(H0 h0); H2 getH2(); void setH2(H2 h2); H3 getH3(); void setH3(H3 h3); Integer getH_index(); void setH_index(Integer h_index); void adjustPositive(); List<Double> getHs(); static Impression add(Impression i1, Impression i2); static Impression subtract(Impression i1, Impression i2); static Impression multiply(Impression i1, double r); long getCountByPriceCategory(int priceCategory); long getIndividualHistogramCountByPriceCategory(int priceCategory); void adjustValue(int priceCategory, long t); @Override String toString(); static final int TOTAL_NUM_OF_PRICE_CATEGORIES; }### Answer:
@Test public void countImpressions() { H0 h0 = new H0(); h0.setH("00"); h0.setT((long) 0); H1 h1 = new H1(); h1.setH("11"); h1.setT((long) 1); H2 h2 = new H2(); h2.setH("22"); h2.setT((long) 2); H3 h3 = new H3(); h3.setH("33"); h3.setT((long) 3); Impression imp = new Impression(h0, h1, h2, h3); double price = 100D; TargetingChannel tc = new TargetingChannel(); tc.setPm("CPC"); long res = imp.countImpressions(price, tc.getPm()); assertNotNull(res); assertEquals(6, res, Double.MAX_VALUE); price = Long.MAX_VALUE; res = imp.countImpressions(price, tc.getPm()); assertNotNull(res); assertEquals(6, res, Double.MAX_VALUE); }