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

syntax = "proto3";

package test_condition;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/test_condition";


import "test/device_condition.proto";
import "test/lab_condition.proto";

// TestCaseSet contains all information about the target test.
message TestCaseSet {
  repeated TestCase test_cases = 1;
}

// TestCase contains information about a test case.
message TestCase {
  enum Framework {
    FRAMEWORK_UNSPECIFIED = 0;
    FRAMEWORK_TAST = 1;
  }

  // Test framework where this test case comes from.
  Framework framework = 1;

  // Required. The name of this test case. E.g. "ui.ChromeLogin".
  string name = 2;

  // Describes the dependencies which needs to be satisfied to run this test.
  TestCondition condition = 3;
}

// Describes the condition which needs to be satisfied to run a test case.
// The condition is formed in a "Disjunctive normal form".
message TestCondition {
  // If an entry in the disjunct_components is satisfied, this condition is
  // considered as satisfied. In other words, TestCondition is the "OR" of all
  // disjunct_components.
  // If there is no entry in disjunct_components, this TestCondition is always
  // considered as satisfied.
  repeated TestConditionComponent disjuct_components = 1;
}

// Describes one "disjunct component" of the TestCondition, which is the "AND"
// of all its fields.
message TestConditionComponent {
  // Represents the condition about device/config.proto.
  DeviceConfigCondition device_config = 1;

  // Represents the condition about lab/peripherals.proto.
  LabPeripheralsCondition lab_peripherals = 2;
}
