public void KeyValidationTest(string keyData, int rollingPeriod, int rollingStartNummberDayOffset, bool isValid)
        {
            var dateTime = DateTime.UtcNow.Date;
            var key      = new V2DiagnosisSubmissionParameter.Key()
            {
                KeyData = keyData, RollingPeriod = (uint)rollingPeriod, RollingStartNumber = dateTime.AddDays(rollingStartNummberDayOffset).ToRollingStartNumber()
            };

            Assert.AreEqual(isValid, key.IsValid());
        }
        public void DeviceVerificationTest_NoKey()
        {
            var platform = "Android";

            V2DiagnosisSubmissionParameter.Key[] dummyDiagnosisKeyDataList = new V2DiagnosisSubmissionParameter.Key[] {
            };
            var dummyRegions = new string[]
            {
                "440",
                "441",
            };
            var dummyDeviceVerificationPayload = "DeviceVerificationPayload THIS STRING IS MEANINGLESS";
            var dummyAppPackageName            = "jp.go.mhlw.cocoa.unit_test";
            var dummyVerificationPayload       = "VerificationPayload THIS STRING IS MEANINGLESS";

            // This value will not affect any result.
            var dummyPadding = new Random().Next().ToString();

            // preparation
            var model = new V2DiagnosisSubmissionParameter()
            {
                Platform = platform,
                Regions  = dummyRegions,
                Keys     = dummyDiagnosisKeyDataList,
                DeviceVerificationPayload = dummyDeviceVerificationPayload,
                AppPackageName            = dummyAppPackageName,
                VerificationPayload       = dummyVerificationPayload,
                Padding = dummyPadding,
            };

            Assert.AreEqual(dummyDeviceVerificationPayload, model.JwsPayload);
            Assert.AreEqual(
                EXPECTED_CLEAR_TEXT_V2_NO_KEY,
                model.ClearText);

            Assert.AreEqual(dummyDeviceVerificationPayload, model.DeviceToken);
            Assert.AreEqual(
                EXPECTED_TRANSACTION_ID_SEED_V2_NO_KEY,
                model.TransactionIdSeed);
        }