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

package privacy

import (
	"config"
	"testing"

	"github.com/golang/glog"
)

// The try-bots expect glog to be imported, but we do not use it.
var _ = glog.Info

var metric = config.MetricDefinition{
	EventCodeBufferMax: 5,
}

func TestEstimateWithEpsilon(t *testing.T) {
	privacyParamsCalculator, err := NewPrivacyEncodingParamsCalculatorForTesting(testParamRecords)
	if err != nil {
		t.Fatal("Failed to create PrivacyEncodingParamsCalculator")
	}
	errorCalculator := NewErrorCalculator(*privacyParamsCalculator)

	testMetric := config.MetricDefinition{
		MetricName: "Occurrence",
		MetricType: config.MetricDefinition_OCCURRENCE,
	}
	uniqueDeviceCount := config.ReportDefinition{
		ReportName:                "UniqueDeviceCounts",
		ReportType:                config.ReportDefinition_UNIQUE_DEVICE_COUNTS,
		LocalAggregationProcedure: config.ReportDefinition_SELECT_FIRST,
	}
	uniqueDeviceHistogram := config.ReportDefinition{
		ReportName:                "UniqueDeviceHistograms",
		ReportType:                config.ReportDefinition_UNIQUE_DEVICE_HISTOGRAMS,
		LocalAggregationProcedure: config.ReportDefinition_SELECT_FIRST,
	}
	hourlyValueHistogram := config.ReportDefinition{
		ReportName:                "HourlyValueHistograms",
		ReportType:                config.ReportDefinition_HOURLY_VALUE_HISTOGRAMS,
		LocalAggregationProcedure: config.ReportDefinition_SELECT_FIRST,
	}
	fleetwideOccurrenceCount := config.ReportDefinition{
		ReportName:                "FleetwideOccurrenceCounts",
		ReportType:                config.ReportDefinition_FLEETWIDE_OCCURRENCE_COUNTS,
		LocalAggregationProcedure: config.ReportDefinition_SELECT_FIRST,
		MaxCount:                  1,
	}
	fleetwideOccurrenceCountHighMax := config.ReportDefinition{
		ReportName:                "FleetwideOccurrenceCountsWithHighMaxCount",
		ReportType:                config.ReportDefinition_FLEETWIDE_OCCURRENCE_COUNTS,
		LocalAggregationProcedure: config.ReportDefinition_SELECT_FIRST,
		MaxCount:                  4,
	}
	fleetwideHistogram := config.ReportDefinition{
		ReportName:                "FleetwideHistograms",
		ReportType:                config.ReportDefinition_FLEETWIDE_HISTOGRAMS,
		LocalAggregationProcedure: config.ReportDefinition_SELECT_FIRST,
	}
	// uniqueDeviceNumericStats := config.ReportDefinition{
	//         ReportName: "UniqueDeviceNumericStats",
	//         ReportType: config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS,
	//         MaxValue:   1,
	// }
	// hourlyValueNumericStats := config.ReportDefinition{
	//         ReportName: "HourlyDeviceNumericStats",
	//         ReportType: config.ReportDefinition_HOURLY_VALUE_NUMERIC_STATS,
	//         MaxValue:   1,
	// }
	// uniqueDeviceNumericStatsMissingMaxValue := config.ReportDefinition{
	//         ReportName: "UniqueDeviceNumericStatsMissingMaxValue",
	//         ReportType: config.ReportDefinition_UNIQUE_DEVICE_NUMERIC_STATS,
	// }
	fleetwideMeans := config.ReportDefinition{
		ReportName: "FleetwideMeans",
		ReportType: config.ReportDefinition_FLEETWIDE_MEANS,
		MaxValue:   1,
		MaxCount:   1,
	}
	fleetwideMeansHighMaxCount := config.ReportDefinition{
		ReportName: "FleetwideMeansHighMaxCount",
		ReportType: config.ReportDefinition_FLEETWIDE_MEANS,
		MaxValue:   1,
		MaxCount:   4,
	}
	fleetwideMeansMissingMaxValue := config.ReportDefinition{
		ReportName: "FleetwideMeansMissingMaxValue",
		ReportType: config.ReportDefinition_FLEETWIDE_MEANS,
	}
	unsupportedReport := config.ReportDefinition{
		ReportName: "UnsupportedReport",
	}

	type args struct {
		metric                 *config.MetricDefinition
		report                 *config.ReportDefinition
		epsilon                float64
		population             uint64
		minDenominatorEstimate uint64
	}
	var tests = []struct {
		input    args
		valid    bool
		expected float64
	}{
		// Single contribution reports
		{args{&testMetric, &uniqueDeviceCount, 1, 10000, 0}, true, 4.935511431266572},
		{args{&testMetric, &uniqueDeviceCount, 10, 10000, 0}, true, 3.014414887122711},
		{args{&testMetric, &uniqueDeviceCount, 1, 20000, 0}, true, 6.979867203344631},
		{args{&testMetric, &uniqueDeviceHistogram, 1, 10000, 0}, true, 4.935511431266572},
		{args{&testMetric, &uniqueDeviceHistogram, 10, 10000, 0}, true, 3.014414887122711},
		{args{&testMetric, &uniqueDeviceHistogram, 1, 20000, 0}, true, 6.979867203344631},
		{args{&testMetric, &hourlyValueHistogram, 1, 10000, 0}, true, 24.178969252553177},
		{args{&testMetric, &hourlyValueHistogram, 10, 10000, 0}, true, 14.767556692999985},
		{args{&testMetric, &hourlyValueHistogram, 1, 20000, 0}, true, 34.19422624116276},

		// Multi-contribution reports
		{args{&testMetric, &fleetwideOccurrenceCount, 1, 10000, 0}, true, 52.893723859652496},
		{args{&testMetric, &fleetwideOccurrenceCount, 10, 10000, 0}, true, 37.430720721998675},
		{args{&testMetric, &fleetwideOccurrenceCount, 1, 20000, 0}, true, 74.80302164673793},
		{args{&testMetric, &fleetwideOccurrenceCountHighMax, 1, 10000, 0}, true, 211.57489543860999},
		{args{&testMetric, &fleetwideHistogram, 1, 10000, 0}, true, 52.893723859652496},
		{args{&testMetric, &fleetwideHistogram, 10, 10000, 0}, true, 37.430720721998675},
		{args{&testMetric, &fleetwideHistogram, 1, 20000, 0}, true, 74.80302164673793},

		// Mean reports
		// {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 500}, true, 0.027891803930152177},
		// {args{&testMetric, &uniqueDeviceNumericStats, 10, 10000, 500}, true, 0.018650077285590205},
		// {args{&testMetric, &uniqueDeviceNumericStats, 1, 20000, 500}, true, 0.039654432133364455},
		// {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 2000}, true, 0.006907368191507632},
		// {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 500}, true, 0.14403990551821316},
		// {args{&testMetric, &hourlyValueNumericStats, 10, 10000, 500}, true, 0.09424308127635954},
		// {args{&testMetric, &hourlyValueNumericStats, 1, 20000, 500}, true, 0.20996453488325503},
		// {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 2000}, true, 0.03425744055252169},
		{args{&testMetric, &fleetwideMeans, 1, 10000, 500}, true, 0.14403990551821316},
		{args{&testMetric, &fleetwideMeans, 10, 10000, 500}, true, 0.09424308127635954},
		{args{&testMetric, &fleetwideMeans, 1, 20000, 500}, true, 0.20996453488325503},
		{args{&testMetric, &fleetwideMeans, 1, 10000, 2000}, true, 0.03425744055252169},
		{args{&testMetric, &fleetwideMeansHighMaxCount, 1, 10000, 500}, true, 14.67564563395404},
		{args{&testMetric, &fleetwideMeansHighMaxCount, 10, 10000, 500}, true, 0.3612570115350953},
		{args{&testMetric, &fleetwideMeansHighMaxCount, 1, 20000, 500}, true, 86.18119817858194},
		{args{&testMetric, &fleetwideMeansHighMaxCount, 1, 10000, 2000}, true, 0.11189363618734707},

		// Invalid input
		// Mean Report missing minDenominatorEstimate
		// {args{&testMetric, &uniqueDeviceNumericStats, 1, 10000, 0}, false, 0},
		// {args{&testMetric, &hourlyValueNumericStats, 1, 10000, 0}, false, 0},
		// {args{&testMetric, &uniqueDeviceNumericStatsMissingMaxValue, 1, 10000, 500}, false, 0},
		{args{&testMetric, &fleetwideMeansMissingMaxValue, 1, 10000, 500}, false, 0},

		// This report type is not currently supported.
		{args{&testMetric, &unsupportedReport, 1, 10000, 0}, false, 0},
	}

	for _, test := range tests {
		input := test.input
		result, err := errorCalculator.Estimate(input.metric, input.report, input.epsilon, input.population, input.minDenominatorEstimate)
		if test.valid && err != nil {
			t.Errorf("Estimate failed for report %v: %v", input.report.ReportName, err)
		} else if !test.valid && err == nil {
			t.Errorf("Estimate accepted invalid report: %v", input.report.ReportName)
		} else if test.valid && result != test.expected {
			t.Errorf("Estimate for report %v (epsilon: %v, population: %v, minDenominator: %v): expected %v, got %v", input.report.ReportName, input.epsilon, input.population, input.minDenominatorEstimate, test.expected, result)
		}
	}
}
