/// <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; }
/// <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; }
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")); }
/// <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; }
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); }
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); }
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)); }
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); }
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); }
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)); }
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); }
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); }
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); }
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); }
/// <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; }
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); }
/// <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; }
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)); }
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); }
/// <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; }
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); }
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); }
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); }
/// <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; }
/// <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; }
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); }
/// <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; }
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); }
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); }
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); }