コード例 #1
0
ファイル: Mode.cs プロジェクト: jimva3hj/hamqsler
        /// <summary>
        /// Check value for this field and modify it or other fields in QSO if required
        /// </summary>
        /// <param name="qso">Qso2 object containing this field</param>
        /// <returns>string indicating changes made, or null if no changes</returns>
        public override string ModifyValues(Qso2 qso)
        {
            string mod = null;
            string submode = qso["Submode", string.Empty];

            if(!aEnums.IsInEnumeration("Mode", Value))
            {
                if(submode.Equals(string.Empty))
                {
                    qso["Submode"] = Value;
                    qso.Fields.Remove(this);
                    mod = "\tMode not found in Mode enumeration. Submode set to mode value and mode cleared.";
                }
                else
                {
                    string mode = aEnums.GetModeFromSubmode(submode);
                    qso["Mode"] = mode;
                    mod = "\tMode not found in Mode enumeration. Mode set to mode for submode.";
                }
            }
            else
            {
                if(!submode.Equals(string.Empty))
                {
                    string mode = aEnums.GetModeFromSubmode(submode);
                    if(!Value.Equals(mode))
                    {
                        qso["Mode"] = mode;
                        mod = "\tMode - submode mismatch. Mode set to proper mode for submode.";
                    }
                }
            }
            return mod;
        }
コード例 #2
0
ファイル: Qsl_Rcvd.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 ///  Change deprecated values to their replacements
 /// 
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string containing message about changes made</returns>
 public override string ModifyValues2(Qso2 qso)
 {
     // this code must be in ModifyValues2, not ModifyValues, because this code changes
     // status of 'V' which must be present when Eqsl_QslRDate.ModifyValues is called.
     // We cannot guarantee the order in which objects in Qso2.Fields is stored.
     string mod = string.Empty;
     string modStr = null;
     if(Value.Equals("V"))
     {
         Credit_Granted granted = qso.GetField("Credit_Granted") as Credit_Granted;
         if(granted == null)
         {
             Credit_Granted credGranted = new Credit_Granted("DXCC:CARD,DXCC_BAND:CARD,DXCC_Mode:CARD",
                                                     aEnums);
             qso.Fields.Add(credGranted);
         }
         else
         {
             granted.Add(new Credit("DXCC:CARD", aEnums));
             granted.Add(new Credit("DXCC_BAND:CARD", aEnums));
             granted.Add(new Credit("DXCC_MODE:CARD", aEnums));
         }
         qso.Fields.Remove(this);
         modStr = "\tValue 'V' is deprecated and replaced with Credit_Granted values: 'DXCC:CARD', 'DXCC_BAND:CARD', and 'DXCC_MODE:CARD'." +
                 Environment.NewLine;
     }
     return modStr;
 }
コード例 #3
0
ファイル: EqslQslRcvdTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValues2VCreditsGranted()
 {
     string err = string.Empty;
     string modStr = string.Empty;
     Qso2 qso = new Qso2("<Credit_Granted:14>DXCC:CARD&LOTW<Eqsl_Qsl_Rcvd:1>V",
                         aEnums, ref err);
     Assert.IsNull(err);
     Eqsl_Qsl_Rcvd rcvd = qso.GetField("Eqsl_Qsl_Rcvd") as Eqsl_Qsl_Rcvd;
     Assert.IsNotNull(rcvd);
     modStr = rcvd.ModifyValues2(qso);
     rcvd = qso.GetField("Eqsl_Qsl_Rcvd") as Eqsl_Qsl_Rcvd;
     Assert.IsNull(rcvd);
     Assert.AreEqual("\tValue 'V' is deprecated and replaced with Credit_Granted values: " +
                     "'DXCC:EQSL', 'DXCC_BAND:EQSL', and 'DXCC_MODE:EQSL'." +
                     Environment.NewLine, modStr);
     Credit_Granted granted = qso.GetField("Credit_Granted") as Credit_Granted;
     Assert.IsNotNull(granted);
     List<Credit> credits = granted.GetCredits("DXCC");
     Assert.AreEqual(1, credits.Count);
     Assert.AreEqual("DXCC:CARD&LOTW&EQSL", credits[0].ToString());
     Assert.IsTrue(credits[0].IsInMedia("EQSL"));
     credits = granted.GetCredits("DXCC_BAND");
     Assert.IsTrue(credits[0].IsInMedia("EQSL"));
     credits = granted.GetCredits("DXCC_Mode");
     Assert.IsTrue(credits[0].IsInMedia("eqsl"));
 }
コード例 #4
0
ファイル: Freq.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 /// Check value for this field and modify it or other fields in QSO if required
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string indicating changes made, or null if no changes</returns>
 public override string ModifyValues(Qso2 qso)
 {
     string mods = null;
     string b = qso["band"];
     string bandFromFreq = string.Empty;
     adifEnums.GetBandFromFrequency(Value, out bandFromFreq);
     if(b != null)
     {
         if(!b.Equals(bandFromFreq))
         {
             qso["band"] = bandFromFreq;
             mods = "\tHam band in Band field does not match band for given frequency." +
                 " Band field modified to match the frequency.";
         }
     }
     else
     {
         string band = string.Empty;
         adifEnums.GetBandFromFrequency(Value, out band);
         Band fBand = new Band(band, adifEnums);
         qso.Fields.Add(fBand);
         mods = "\tFrequency specified, but band is not. Band field generated.";
     }
     return mods;
 }
コード例 #5
0
 public void TestValidManager()
 {
     Qsos2 qsos2 = new Qsos2();
     string err = string.Empty;
     Qso2 qso = new Qso2("<QSL_VIA:5>VA3HJ<eor>", App.AdifEnums, ref err, qsos2);
     QsoWithInclude qwi = new QsoWithInclude(qso);
     string error = qwi["Manager"];
     Assert.IsNull(error);
 }
コード例 #6
0
 public void TestInvalidManagerPrefix()
 {
     Qsos2 qsos2 = new Qsos2();
     string err = string.Empty;
     Qso2 qso = new Qso2("<QSL_VIA:9>VP9/VA3HJ<eor>", App.AdifEnums, ref err, qsos2);
     QsoWithInclude qwi = new QsoWithInclude(qso);
     string error = qwi["Manager"];
     Assert.AreEqual("Must either be empty or a valid callsign", error);
 }
コード例 #7
0
 public void TestEqualsUnEqualQsos()
 {
     Qso2 q1 = new Qso2("<Call:6>VA3JNO<Mode:3>SSB<Freq:5>7.235<qso_date:8>20130615<time_on:6>124316",
                         aEnums, ref errorString);
     Qso2 q2 = new Qso2("<Call:6>VA3JNO<Mode:3>SSB<Freq:5>7.235<qso_date:8>20130622<time_on:6>124316",
                         aEnums, ref errorString);
     QsoEqualityComparer comparer = new QsoEqualityComparer();
     Assert.IsFalse(comparer.Equals(q1, q2));
 }
コード例 #8
0
ファイル: Qso2Tests.cs プロジェクト: jimva3hj/hamqsler
 public void TestApplicationDefinedFieldNoDataType()
 {
     errorString = string.Empty;
     Qso2 qso = new Qso2("<APP_HAMQSLER_TEST:10>Test value", aEnums, ref errorString);
     Assert.AreEqual(null, errorString);
     Assert.AreEqual("APP_HAMQSLER_TEST", qso.Fields[0].Name);
     Assert.AreEqual("Test value", qso.Fields[0].Value);
     Assert.AreEqual("S", qso.Fields[0].DataType.Value);
 }
コード例 #9
0
ファイル: GuestOpTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesWithOperatorField()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Guest_Op:5>VA3HJ<Operator:6>VA3JNO", aEnums, ref err);
     Guest_Op guest = qso.GetField("Guest_Op") as Guest_Op;
     string mod = guest.ModifyValues(qso);
     guest = qso.GetField("Guest_Op") as Guest_Op;
     Assert.IsNull(guest);
     Assert.AreEqual("\tGuest_Op field cannot be changed to Operator field because Operator field already exists. Guest_Op field deleted." +
                     Environment.NewLine, mod);
 }
コード例 #10
0
ファイル: FreqRxTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesWithMatchingValues()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Freq_Rx:6>14.263<Band_Rx:3>20m", aEnums, ref err);
     Assert.IsNull(err);
     AdifField field = qso.GetField("Freq_Rx");
     Assert.IsNotNull(field);
     Freq_Rx freq = field as Freq_Rx;
     Assert.IsNotNull(freq);
     Assert.IsNull(freq.ModifyValues(qso));
 }
コード例 #11
0
ファイル: ArrlSectTest.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyNWT()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<arrl_sect:3>NWT", aEnums, ref err);
     Arrl_Sect nwt = qso.GetField("Arrl_Sect") as Arrl_Sect;
     Assert.IsNotNull(nwt);
     string mod = nwt.ModifyValues(qso);
     Assert.AreEqual("NT", nwt.Value);
     Assert.AreEqual("\tArrl_Sect:" + Environment.NewLine +
                     "\t\tDeprecated section 'NWT' changed to 'NT'." +
                     Environment.NewLine, mod);
 }
コード例 #12
0
 public void TestModifyValuesNull()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Eqsl_QslRDate:8>20120916", aEnums, ref err);
     Eqsl_QslRDate date = qso.GetField("Eqsl_QslRDate") as Eqsl_QslRDate;
     Assert.IsNotNull(date);
     err = date.ModifyValues(qso);
     date = qso.GetField("Eqsl_QslRDate") as Eqsl_QslRDate;
     Assert.IsNull(date);
     Assert.AreEqual("\tEqsl_QslRDate field deleted. This field is only valid when Eqsl_Qsl_Rcvd field is Y, I, or V." +
                      Environment.NewLine, err);
 }
コード例 #13
0
 public void TestModifyValuesNull()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Lotw_QslSDate:8>20120916", aEnums, ref err);
     Lotw_QslSDate date = qso.GetField("Lotw_QslSDate") as Lotw_QslSDate;
     Assert.IsNotNull(date);
     err = date.ModifyValues(qso);
     date = qso.GetField("Lotw_QslSDate") as Lotw_QslSDate;
     Assert.IsNull(date);
     Assert.AreEqual("\tLotw_QslSDate field deleted. This field is only valid when Lotw_Qsl_Sent field is Y, Q, or I." +
                      Environment.NewLine, err);
 }
コード例 #14
0
 public void TestModifyValuesWithOwnerCallsign()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Station_Callsign:5>VA3HJ<Owner_Callsign:6>VA3JNO", aEnums, ref err);
     Station_Callsign call = qso.GetField("Station_Callsign") as Station_Callsign;
     Assert.IsNotNull(call);
     string mod = call.ModifyValues(qso);
     Owner_Callsign owner = qso.GetField("Owner_Callsign") as Owner_Callsign;
     Assert.IsNotNull(owner);
     Assert.AreNotEqual(call.Value, owner.Value);
     Assert.AreEqual("VA3JNO", owner.Value);
     Assert.IsNull(mod);
 }
コード例 #15
0
ファイル: Eqsl_QslSDate.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 /// This field is valid only if Eqsl_Qsl_Sent is Y, Q, or I.
 /// Delete field if other value or null
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string containing modification message</returns>
 public override string ModifyValues(Qso2 qso)
 {
     string mod = null;
     Eqsl_Qsl_Sent sent = qso.GetField("Eqsl_Qsl_Sent") as Eqsl_Qsl_Sent;
     if(sent == null || (sent.Value != "Y" && sent.Value != "Q" && sent.Value != "I"))
     {
         qso.Fields.Remove(this);
         mod = "\tEqsl_QslSDate field deleted. This field is only valid when " +
                 "Eqsl_Qsl_Sent field is Y, Q, or I." +
                 Environment.NewLine;
     }
     return mod;
 }
コード例 #16
0
ファイル: QslRcvdViaTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesMStatus()
 {
     string err = string.Empty;
     string modStr = string.Empty;
     Qso2 qso = new Qso2("<Qsl_Rcvd_Via:1>M", aEnums, ref err);
     Qsl_Rcvd_Via status = qso.GetField("Qsl_Rcvd_Via") as Qsl_Rcvd_Via;
     Assert.IsNotNull(status);
     string mod = status.ModifyValues(qso);
     Assert.AreEqual("\tQsl_Rcvd_Via value 'M' deprecated with no replacement value. Field deleted."
                     + Environment.NewLine, mod);
     status = qso.GetField("Qsl_Rcvd_Via") as Qsl_Rcvd_Via;
     Assert.IsNull(status);
 }
コード例 #17
0
ファイル: Eqsl_QslRDate.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 /// This field is valid only if Eqsl_Qsl_Rcvd is Y, I, or V.
 /// Delete field if other value or null
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string containing modification message</returns>
 public override string ModifyValues(Qso2 qso)
 {
     string mod = null;
     Eqsl_Qsl_Rcvd rcvd = qso.GetField("Eqsl_Qsl_Rcvd") as Eqsl_Qsl_Rcvd;
     if(rcvd == null || (rcvd.Value != "Y" && rcvd.Value != "I" && rcvd.Value != "V"))
     {
         qso.Fields.Remove(this);
         mod = "\tEqsl_QslRDate field deleted. This field is only valid when " +
                 "Eqsl_Qsl_Rcvd field is Y, I, or V." +
                 Environment.NewLine;
     }
     return mod;
 }
コード例 #18
0
ファイル: FreqTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesWithMisMatchedValues()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Freq:6>14.263<Band:3>10m", aEnums, ref err);
     Assert.IsNull(err);
     AdifField field = qso.GetField("Freq");
     Assert.IsNotNull(field);
     Freq freq = field as Freq;
     Assert.IsNotNull(freq);
     Assert.AreEqual("\tHam band in Band field does not match band for given frequency." +
                 " Band field modified to match the frequency.",
                 freq.ModifyValues(qso));
 }
コード例 #19
0
ファイル: QslRcvdViaTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesEStatus()
 {
     string err = string.Empty;
     string modStr = string.Empty;
     Qso2 qso = new Qso2("<Qsl_Rcvd_Via:1>E", aEnums, ref err);
     Qsl_Rcvd_Via status = qso.GetField("Qsl_Rcvd_Via") as Qsl_Rcvd_Via;
     Assert.IsNotNull(status);
     string mod = status.ModifyValues(qso);
     Assert.IsNull(mod);
     status = qso.GetField("Qsl_Rcvd_Via") as Qsl_Rcvd_Via;
     Assert.IsNotNull(status);
     Assert.AreEqual("E", status.Value);
 }
コード例 #20
0
ファイル: Arrl_Sect.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 /// Modify value for any section that is deprecated or deleted.
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string containing modifications made</returns>
 public override string ModifyValues(Qso2 qso)
 {
     string mod = null;
     if(aEnums.IsDeprecated("Arrl_Section", Value))
     {
         string value = Value;
         Value = aEnums.GetReplacementValue("Arrl_Section", value);
         mod = "\tArrl_Sect:" + Environment.NewLine +
             "\t\tDeprecated section 'NWT' changed to 'NT'." +
             Environment.NewLine;
     }
     return mod;
 }
コード例 #21
0
ファイル: ContestIdTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesEa_Rtty()
 {
     string err = string.Empty;
     string modStr = string.Empty;
     Qso2 qso = new Qso2("<contest_ID:7>EA-RTTY", aEnums, ref err);
     Contest_Id id = qso.GetField("Contest_Id") as Contest_Id;
     Assert.IsNotNull(id);
     modStr = id.ModifyValues(qso);
     Assert.AreEqual("EA-WW-RTTY", id.Value);
     Assert.AreEqual("\tContest_Id:" + Environment.NewLine +
                     "\t\tDeprecated value 'EA-RTTY' changed to 'EA-WW-RTTY'." +
                     Environment.NewLine, modStr);
 }
コード例 #22
0
ファイル: VEProvTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesState()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<VE_PROV:2>ON<STATE:2>AB", aEnums, ref err);
     VE_Prov prov = qso.GetField("VE_Prov") as VE_Prov;
     Assert.IsNotNull(prov);
     string mod = prov.ModifyValues(qso);
     prov = qso.GetField("VE_Prov") as VE_Prov;
     Assert.IsNull(prov);
     State state = qso.GetField("State") as State;
     Assert.AreEqual("AB", state.Value);
     Assert.AreEqual("\tVE_Prov field deprecated. State field already exists, so VE_Prov field deleted." +
                     Environment.NewLine, mod);
 }
コード例 #23
0
ファイル: DisplayQsosTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestAddQsoNoQsos2()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Mode:3>SSB<Band:3>40m<qso_date:8>20130615<time_on:6>124316",
                         aEnums, ref err);
     QsoWithInclude qwi = new QsoWithInclude(qso);
     DisplayQsos dQsos = new DisplayQsos();
     Assert.IsFalse(dQsos.IsDirty);
     Assert.IsFalse(dQsos.NeedsSorting);
     dQsos.AddQso(qwi);
     Assert.AreEqual(1, dQsos.Count);
     Assert.IsTrue(dQsos.IsDirty);
     Assert.IsTrue(dQsos.NeedsSorting);
 }
コード例 #24
0
ファイル: Operator.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 /// Generate Station_Callsign field from this field, if does not exist
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string describing the modification made</returns>
 public override string ModifyValues(Qso2 qso)
 {
     string mod = null;
     Station_Callsign call = qso.GetField("Station_Callsign") as Station_Callsign;
     if(call == null)
     {
         call = new Station_Callsign(Value);
         qso.Fields.Add(call);
         call.ModifyValues(qso);
         mod = "\tStation_Callsign field generated from Operator field." +
                     Environment.NewLine;
     }
     return mod;
 }
コード例 #25
0
ファイル: Station_Callsign.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 /// Generate Owner_Callsign field if it does not exist
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string indicating changes made</returns>
 public override string ModifyValues(Qso2 qso)
 {
     string mod = null;
     Owner_Callsign owner = qso.GetField("Owner_Callsign") as Owner_Callsign;
     if(owner == null)
     {
         owner = new Owner_Callsign(Value);
         qso.Fields.Add(owner);
         owner.ModifyValues(qso);
         mod = "\tOwner_Callsign field generated from Station_Callsign" +
                     Environment.NewLine;
     }
     return mod;
 }
コード例 #26
0
ファイル: OperatorTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesStation_Callsign()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<Operator:5>VA3HJ<Station_Callsign:6>VA3JNO", aEnums, ref err);
     Operator op = qso.GetField("Operator") as Operator;
     Assert.IsNotNull(op);
     err = op.ModifyValues(qso);
     op = qso.GetField("Operator") as Operator;
     Assert.IsNotNull(op);
     Assert.IsNull(err);
     Station_Callsign call = qso.GetField("Station_Callsign") as Station_Callsign;
     Assert.IsNotNull(call);
     Assert.AreEqual("VA3JNO", call.Value);
 }
コード例 #27
0
ファイル: Contest_Id.cs プロジェクト: jimva3hj/hamqsler
 /// <summary>
 ///  Change deprecated values to their replacements
 /// </summary>
 /// <param name="qso">Qso2 object containing this field</param>
 /// <returns>string containing message about changes made</returns>
 public override string ModifyValues(Qso2 qso)
 {
     string mod = null;
     if(aEnums.IsInEnumeration("Contest_ID", Value) &&
        aEnums.IsDeprecated("Contest_ID", Value))
     {
         string value = Value;
         Value = aEnums.GetReplacementValue("Contest_ID", value);
         mod = string.Format("\tContest_Id:" + Environment.NewLine +
             "\t\tDeprecated value '{0}' changed to '{1}'." +
             Environment.NewLine, value, Value);
     }
     return mod;
 }
コード例 #28
0
ファイル: VEProvTests.cs プロジェクト: jimva3hj/hamqsler
 public void TestModifyValuesNoState()
 {
     string err = string.Empty;
     Qso2 qso = new Qso2("<VE_PROV:2>ON", aEnums, ref err);
     VE_Prov prov = qso.GetField("VE_Prov") as VE_Prov;
     Assert.IsNotNull(prov);
     string mod = prov.ModifyValues(qso);
     prov = qso.GetField("VE_Prov") as VE_Prov;
     Assert.IsNull(prov);
     State state = qso.GetField("State") as State;
     Assert.AreEqual("ON", state.Value);
     Assert.AreEqual("\tVE_Prov field deprecated. VE_Prov field deleted and replaced with State field." +
                     Environment.NewLine, mod);
 }
コード例 #29
0
        public void TestModifyValuesFalse(
			[Values("N", "R")] string rcvd)
        {
            string adif = string.Format("<Lotw_Qsl_Rcvd:1>{0}<Lotw_QslRDate:8>20120916",
             	                           rcvd);
            string err = string.Empty;
            Qso2 qso = new Qso2(adif, aEnums, ref err);
            Lotw_QslRDate date = qso.GetField("Lotw_QslRDate") as Lotw_QslRDate;
            Assert.IsNotNull(date);
            err = date.ModifyValues(qso);
            date = qso.GetField("Lotw_QslRDate") as Lotw_QslRDate;
            Assert.IsNull(date);
            Assert.AreEqual("\tLotw_QslRDate field deleted. This field is only valid when Lotw_Qsl_Rcvd field is Y, I, or V." +
                             Environment.NewLine, err);
        }
コード例 #30
0
ファイル: QslSDateTests.cs プロジェクト: jimva3hj/hamqsler
        public void TestModifyValuesFalse(
			[Values("N", "R")] string sent)
        {
            string adif = string.Format("<Qsl_Sent:1>{0}<QslSDate:8>20120916",
             	                           sent);
            string err = string.Empty;
            Qso2 qso = new Qso2(adif, aEnums, ref err);
            QslSDate date = qso.GetField("QslSDate") as QslSDate;
            Assert.IsNotNull(date);
            err = date.ModifyValues(qso);
            date = qso.GetField("QslSDate") as QslSDate;
            Assert.IsNull(date);
            Assert.AreEqual("\tQslSDate field deleted. This field is only valid when Qsl_Sent field is Y, Q, or I." +
                             Environment.NewLine, err);
        }