public static AVal Join(AVal a, AVal b) { AVal result = null; if (a == Top || b == Top) { result = Top; } else if (a == Bottom) { result = b; } else if (b == Bottom) { result = a; } else if (a.lowerBound != null && b.lowerBound != null && a.lowerBound == b.lowerBound) { result = a; } else if (a == b) { result = a; // or b... } else { result = Top; } return(result); }
public void MatchTest_Match() { var a = AVal.AVC("string1"); var b = AVal.AVC("string1"); Assert.IsTrue(AVal.Match(a, b)); }
protected override bool AtMost(AbstractValue a, AbstractValue b) { AVal av = (AVal)a; AVal bv = (AVal)b; return(av.IsExposable || !bv.IsExposable); }
public static AVal Meet(AVal a, AVal b) { AVal result = null; if (a == Bottom || b == Bottom) { result = Bottom; } else if (a == Top) { result = b; } else if (b == Top) { result = a; } else if (a == b) { result = a; // or b... } else { result = Bottom; } return(result); }
protected override bool AtMost(AbstractValue a, AbstractValue b) { AVal av = (AVal)a; AVal bv = (AVal)b; return(AVal.Join(av, bv) == bv); }
public void AMF_EncodeNamedNumberTest() { AVal name = AVal.AVC("name"); double val = -2.3456; // 0xC0 02 C3 C9 EE CB FB 16 byte[] buf = new byte[100]; int enc = 0, pend = buf.Length; int len = 2 + 4 + 1 + 8; // "name".len + "name" + AMF_NUMBER + 8 enc = AMF.AMF_EncodeNamedNumber(buf, enc, pend, name, val); Assert.AreEqual(len, enc); Assert.AreEqual(0x00, buf[0]); Assert.AreEqual(0x04, buf[1]); Assert.AreEqual('n', buf[2]); Assert.AreEqual('a', buf[3]); Assert.AreEqual('m', buf[4]); Assert.AreEqual('e', buf[5]); Assert.AreEqual((byte)AMFDataType.AMF_NUMBER, buf[6]); Assert.AreEqual(0xC0, buf[7]); Assert.AreEqual(0x02, buf[8]); Assert.AreEqual(0xC3, buf[9]); Assert.AreEqual(0xC9, buf[10]); Assert.AreEqual(0xEE, buf[11]); Assert.AreEqual(0xCB, buf[12]); Assert.AreEqual(0xFB, buf[13]); Assert.AreEqual(0x16, buf[14]); }
public void AMF_EncodeNamedStringTest2() { AVal name = AVal.AVC("name"), val = AVal.AVC("val"); byte[] buf = new byte[100]; int offset = 20; int enc = offset, pend = buf.Length; int len = 2 + 4 + 1 + 2 + 3; // "name".len + "name" + AMF_STRING + "val".len + "val" enc = AMF.AMF_EncodeNamedString(buf, enc, pend, name, val); Assert.AreEqual(len + offset, enc); Assert.AreEqual(0x00, buf[0 + offset]); Assert.AreEqual(0x04, buf[1 + offset]); Assert.AreEqual('n', buf[2 + offset]); Assert.AreEqual('a', buf[3 + offset]); Assert.AreEqual('m', buf[4 + offset]); Assert.AreEqual('e', buf[5 + offset]); Assert.AreEqual((byte)AMFDataType.AMF_STRING, buf[6 + offset]); Assert.AreEqual(0x00, buf[7 + offset]); Assert.AreEqual(0x03, buf[8 + offset]); Assert.AreEqual('v', buf[9 + offset]); Assert.AreEqual('a', buf[10 + offset]); Assert.AreEqual('l', buf[11 + offset]); Assert.AreEqual(0x00, buf[12 + offset]); }
public void MatchTest_Unmatch() { var a = AVal.AVC("string1"); var b = AVal.AVC("string2"); Assert.IsFalse(AVal.Match(a, b)); }
public static AVal Meet(AVal a, AVal b) { AVal result = null; if (a == Bottom || b == Bottom) result = Bottom; else if (a == Top) result = b; else if (b == Top) result = a; else if (a == b) result = a; // or b... else result = Bottom; return result; }
public static AVal Join(AVal a, AVal b) { AVal result = null; if (a == Top || b == Top) result = Top; else if (a == Bottom) result = b; else if (b == Bottom) result = a; else if (a.lowerBound != null && b.lowerBound != null && a.lowerBound == b.lowerBound) result = a; else if (a == b) result = a; // or b... else result = Top; return result; }
public void AMF_EncodeStringTest2() { AVal app = AVal.AVC("appp"); byte[] buf = new byte[4]; int enc = 0, pend = buf.Length; enc = AMF.AMF_EncodeString(buf, enc, pend, app); Assert.AreEqual(0, enc); }
public bool set(string key, Type filter, AVal aval, MouseState.Flags ifType = MouseState.Flags.LMR) { if (!args[idx].Eq(key)) { return(false); } LSender.Send(this, $"Found '{key}' key in {idx} position.", Message.Level.Debug); MouseState.Flags type; if (ifType != MouseState.Flags.None) { type = MouseState.Extract(args[++idx]); LSender.Send(this, $"type = {type} by {idx}", Message.Level.Debug); } else { type = MouseState.Flags.None; } string val; if (aval != null) { val = args[++idx]; LSender.Send(this, $"value = {val} by {idx}", Message.Level.Debug); } else { val = null; } Guid g = filter.GUID; if (Filters[g] == null) { LSender.Send(this, $"Filter '{g}' is not registered.", Message.Level.Debug); return(true); } Filters[g].Activated = true; aval?.Invoke(Filters[g], val); if (ifType == MouseState.Flags.None) { return(true); } if ((ifType & type) == 0) { throw new ArgumentException($"Incorrect Flags {type} -> {ifType}"); } Filters[g].Handler = type; return(true); }
/// <summary> /// To configure data via arguments list. /// </summary> /// <param name="args"></param> public void configure(string[] args) { if (args == null) { throw new ArgumentNullException(); } ArgsHelper h = new ArgsHelper(Filters); h.args = args; AVal aic = (IMouseListener l, string s) => { var v = s.DValues(';'); l.Value = v[0]; l.Data = new InterruptedClickFilter.TData() { deltaMin = (uint)v[1], deltaMax = (uint)v[2] }; }; AVal amc = (IMouseListener l, string s) => { l.Data = new MixedClicksFilter.TData() { onlyDownCodes = s.DValue() != 0 }; }; AVal adc = (IMouseListener l, string s) => { l.Value = s.DValue(); }; AVal ahs = (IMouseListener l, string s) => { var v = s.DValues(';'); l.Data = new HyperactiveScrollFilter.TData() { capacity = (int)v[0], limit = (uint)v[1] }; }; for (h.idx = 0; h.idx < args.Length; ++h.idx) { if (!h.set("-InterruptedClick", typeof(InterruptedClickFilter), aic) && !h.set("-MixedClicks", typeof(MixedClicksFilter), amc) && !h.set("-DoubleClicks", typeof(DoubleClicksFilter), adc) && !h.set("-HyperactiveScroll", typeof(HyperactiveScrollFilter), ahs, MouseState.Flags.None)) { throw new ArgumentException($"Incorrect arguments: {args[h.idx]} -> {String.Join(" ", args)}"); } } }
public void RTMP_ParseURLTest_example() { AVal host, app, playpath; int protocol, port; var res = RTMP.RTMP_ParseURL(EXAMPLE_URL, out protocol, out host, out port, out playpath, out app); Assert.IsTrue(res); Assert.AreEqual(RTMP.RTMP_PROTOCOL_RTMP, protocol); Assert.IsTrue(AVal.Match(AVal.AVC("example.com"), host), "actual:" + host.to_s()); Assert.AreEqual(41935, port); Assert.IsTrue(AVal.Match(AVal.AVC("plypath"), playpath), "actual:" + playpath); Assert.IsTrue(AVal.Match(AVal.AVC("app"), app), "actual:" + app); }
public void AMF_EncodeStringTest() { AVal app = AVal.AVC("app"); byte[] buf = new byte[50]; int output = 0, pend = buf.Length; output = AMF.AMF_EncodeString(buf, output, pend, app); Assert.AreEqual(6, output); Assert.AreEqual((byte)AMFDataType.AMF_STRING, buf[0]); Assert.AreEqual(0, buf[1]); Assert.AreEqual(3, buf[2]); Assert.AreEqual('a', buf[3]); Assert.AreEqual('p', buf[4]); Assert.AreEqual('p', buf[5]); }
public void AMF_DecodeStringTest() { var buf = new byte[100]; AVal str = AVal.AVC("foobar"); AMF.AMF_EncodeString(buf, 0, buf.Length, str); AVal actual; AMF.AMF_DecodeString(buf, 1, out actual); // Skip AMFDatatype flag Assert.AreEqual(6, actual.av_len); Assert.AreEqual('f', actual.av_val[0]); Assert.AreEqual('o', actual.av_val[1]); Assert.AreEqual('o', actual.av_val[2]); Assert.AreEqual('b', actual.av_val[3]); Assert.AreEqual('a', actual.av_val[4]); Assert.AreEqual('r', actual.av_val[5]); }
public void AMF_EncodeNamedBooleanTest() { AVal name = AVal.AVC("name"); byte[] buf = new byte[100]; int enc = 0, pend = buf.Length; int len = 2 + 4 + 1 + 1; // "name".len + "name" + AMF_NUMBER + 8 enc = AMF.AMF_EncodeNamedBoolean(buf, enc, pend, name, true); Assert.AreEqual(len, enc); Assert.AreEqual(0x00, buf[0]); Assert.AreEqual(0x04, buf[1]); Assert.AreEqual('n', buf[2]); Assert.AreEqual('a', buf[3]); Assert.AreEqual('m', buf[4]); Assert.AreEqual('e', buf[5]); Assert.AreEqual((byte)AMFDataType.AMF_BOOLEAN, buf[6]); Assert.AreEqual(0x01, buf[7]); }
public void AMF_EncodeNamedStringTest() { AVal name = AVal.AVC("name"), val = AVal.AVC("val"); byte[] buf = new byte[100]; int enc = 0, pend = buf.Length; int len = 2 + 4 + 1 + 2 + 3; // "name".len + "name" + AMF_STRING + "val".len + "val" enc = AMF.AMF_EncodeNamedString(buf, enc, pend, name, val); Assert.AreEqual(len, enc); Assert.AreEqual(0x00, buf[0]); Assert.AreEqual(0x04, buf[1]); Assert.AreEqual('n', buf[2]); Assert.AreEqual('a', buf[3]); Assert.AreEqual('m', buf[4]); Assert.AreEqual('e', buf[5]); Assert.AreEqual((byte)AMFDataType.AMF_STRING, buf[6]); Assert.AreEqual(0x00, buf[7]); Assert.AreEqual(0x03, buf[8]); Assert.AreEqual('v', buf[9]); Assert.AreEqual('a', buf[10]); Assert.AreEqual('l', buf[11]); Assert.AreEqual(0x00, buf[12]); }
public static AVal Meet(AVal a, AVal b) { bool nonnull = a.IsNonNull || b.IsNonNull; return AVal.For(nonnull); }
public override MathematicalLattice.Element NontrivialMeet(MathematicalLattice.Element a, MathematicalLattice.Element b) { return(AVal.Meet((AVal)a, (AVal)b)); }
public override AbstractValue NontrivialJoin(AbstractValue a, AbstractValue b) { return(AVal.Join((AVal)a, (AVal)b)); }
public static AVal Join(AVal a, AVal b) { bool consistent = a.IsExposable && b.IsExposable; return AVal.For(consistent); }
public static AVal Meet(AVal a, AVal b) { bool consistent = a.IsExposable || b.IsExposable; return(AVal.For(consistent)); }
public static AVal Join(AVal a, AVal b) { bool consistent = a.IsExposable && b.IsExposable; return(AVal.For(consistent)); }
public static AVal Meet(AVal a, AVal b) { bool consistent = a.IsExposable || b.IsExposable; return AVal.For(consistent); }
public static AVal Join(AVal a, AVal b) { bool unassigned = a.Unassigned && b.Unassigned; bool assigned = a.Assigned && b.Assigned; return AVal.For(unassigned, assigned, Delay.Join(a.Delay, b.Delay)); }
public void MatchTest_Empty() { AVal a = AVal.AVC(string.Empty), b = AVal.AVC(string.Empty); Assert.IsTrue(AVal.Match(a, b)); }
public static AVal Meet(AVal a, AVal b) { bool unassigned = a.Unassigned || b.Unassigned; bool assigned = a.Assigned || b.Assigned; return AVal.For(unassigned, assigned, Delay.Meet(a.Delay, b.Delay)); }
public static AVal Join(AVal a, AVal b) { bool nonnull = a.IsNonNull && b.IsNonNull; return AVal.For(nonnull); }