/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the codebuild-2016-10-06.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.CodeBuild.Model
{
    /// 
    /// Information about the results from running a series of test cases during the run of
    /// a build project. The test cases are specified in the buildspec for the build project
    /// using one or more paths to the test case files. You can specify any type of tests
    /// you want, such as unit tests, integration tests, and functional tests.
    /// 
    public partial class Report
    {
        private string _arn;
        private CodeCoverageReportSummary _codeCoverageSummary;
        private DateTime? _created;
        private string _executionId;
        private DateTime? _expired;
        private ReportExportConfig _exportConfig;
        private string _name;
        private string _reportGroupArn;
        private ReportStatusType _status;
        private TestReportSummary _testSummary;
        private bool? _truncated;
        private ReportType _type;
        /// 
        /// Gets and sets the property Arn. 
        /// 
        ///  The ARN of the report run. 
        /// 
        /// 
        [AWSProperty(Min=1)]
        public string Arn
        {
            get { return this._arn; }
            set { this._arn = value; }
        }
        // Check to see if Arn property is set
        internal bool IsSetArn()
        {
            return this._arn != null;
        }
        /// 
        /// Gets and sets the property CodeCoverageSummary. 
        /// 
        /// A CodeCoverageReportSummary object that contains a code coverage summary
        /// for this report.
        /// 
        /// 
        public CodeCoverageReportSummary CodeCoverageSummary
        {
            get { return this._codeCoverageSummary; }
            set { this._codeCoverageSummary = value; }
        }
        // Check to see if CodeCoverageSummary property is set
        internal bool IsSetCodeCoverageSummary()
        {
            return this._codeCoverageSummary != null;
        }
        /// 
        /// Gets and sets the property Created. 
        /// 
        ///  The date and time this report run occurred. 
        /// 
        /// 
        public DateTime Created
        {
            get { return this._created.GetValueOrDefault(); }
            set { this._created = value; }
        }
        // Check to see if Created property is set
        internal bool IsSetCreated()
        {
            return this._created.HasValue; 
        }
        /// 
        /// Gets and sets the property ExecutionId. 
        /// 
        ///  The ARN of the build run that generated this report. 
        /// 
        /// 
        public string ExecutionId
        {
            get { return this._executionId; }
            set { this._executionId = value; }
        }
        // Check to see if ExecutionId property is set
        internal bool IsSetExecutionId()
        {
            return this._executionId != null;
        }
        /// 
        /// Gets and sets the property Expired. 
        /// 
        ///  The date and time a report expires. A report expires 30 days after it is created.
        /// An expired report is not available to view in CodeBuild. 
        /// 
        /// 
        public DateTime Expired
        {
            get { return this._expired.GetValueOrDefault(); }
            set { this._expired = value; }
        }
        // Check to see if Expired property is set
        internal bool IsSetExpired()
        {
            return this._expired.HasValue; 
        }
        /// 
        /// Gets and sets the property ExportConfig. 
        /// 
        ///  Information about where the raw data used to generate this report was exported. 
        /// 
        /// 
        public ReportExportConfig ExportConfig
        {
            get { return this._exportConfig; }
            set { this._exportConfig = value; }
        }
        // Check to see if ExportConfig property is set
        internal bool IsSetExportConfig()
        {
            return this._exportConfig != null;
        }
        /// 
        /// Gets and sets the property Name. 
        /// 
        ///  The name of the report that was run. 
        /// 
        /// 
        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }
        // Check to see if Name property is set
        internal bool IsSetName()
        {
            return this._name != null;
        }
        /// 
        /// Gets and sets the property ReportGroupArn. 
        /// 
        ///  The ARN of the report group associated with this report. 
        /// 
        /// 
        [AWSProperty(Min=1)]
        public string ReportGroupArn
        {
            get { return this._reportGroupArn; }
            set { this._reportGroupArn = value; }
        }
        // Check to see if ReportGroupArn property is set
        internal bool IsSetReportGroupArn()
        {
            return this._reportGroupArn != null;
        }
        /// 
        /// Gets and sets the property Status. 
        /// 
        ///  The status of this report. 
        /// 
        /// 
        public ReportStatusType Status
        {
            get { return this._status; }
            set { this._status = value; }
        }
        // Check to see if Status property is set
        internal bool IsSetStatus()
        {
            return this._status != null;
        }
        /// 
        /// Gets and sets the property TestSummary. 
        /// 
        ///  A TestReportSummary object that contains information about this test
        /// report. 
        /// 
        /// 
        public TestReportSummary TestSummary
        {
            get { return this._testSummary; }
            set { this._testSummary = value; }
        }
        // Check to see if TestSummary property is set
        internal bool IsSetTestSummary()
        {
            return this._testSummary != null;
        }
        /// 
        /// Gets and sets the property Truncated. 
        /// 
        ///  A boolean that specifies if this report run is truncated. The list of test cases
        /// is truncated after the maximum number of test cases is reached. 
        /// 
        /// 
        public bool Truncated
        {
            get { return this._truncated.GetValueOrDefault(); }
            set { this._truncated = value; }
        }
        // Check to see if Truncated property is set
        internal bool IsSetTruncated()
        {
            return this._truncated.HasValue; 
        }
        /// 
        /// Gets and sets the property Type. 
        /// 
        /// The type of the report that was run.
        /// 
        ///   - CODE_COVERAGE
  -  
        /// 
        /// A code coverage report.
        /// 
        ///  
  - TEST
  -  
        /// 
        /// A test report.
        /// 
        ///  
  
        /// 
        public ReportType Type
        {
            get { return this._type; }
            set { this._type = value; }
        }
        // Check to see if Type property is set
        internal bool IsSetType()
        {
            return this._type != null;
        }
    }
}