# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import json
import unittest

from metrics import histogram_util

class TestHistogram(unittest.TestCase):
  def testSubtractHistogram(self):
    baseline_histogram = """{"count": 3, "buckets": [
        {"low": 1, "high": 2, "count": 1},
        {"low": 2, "high": 3, "count": 2}]}"""

    later_histogram = """{"count": 14, "buckets": [
        {"low": 1, "high": 2, "count": 1},
        {"low": 2, "high": 3, "count": 3},
        {"low": 3, "high": 4, "count": 10}]}"""

    new_histogram = json.loads(
        histogram_util.SubtractHistogram(later_histogram, baseline_histogram))
    new_buckets = dict()
    for b in new_histogram['buckets']:
      new_buckets[b['low']] = b['count']
    self.assertFalse(1 in new_buckets)
    self.assertEquals(1, new_buckets[2])
    self.assertEquals(10, new_buckets[3])
