コード例 #1
0
        public void OracleTest()
        {
            BaseKeyPair kp            = BaseKeyPair.Generate();
            Account     oracleAccount = fluentClient.ConstructAccount(kp);
            Account     account       = fluentClient.ConstructAccount(baseKeyPair);
            ulong       money         = (ulong)1m.ToAettos(Unit.AE);
            bool        result        = account.SendAmount(oracleAccount.KeyPair.PublicKey, money).WaitForFinish(TimeSpan.FromSeconds(30));

            Assert.IsTrue(result);
            oracleAccount.Refresh();
            Assert.AreEqual(oracleAccount.Balance, money);

            OracleServer <CityQuery, TemperatureResponse> query = oracleAccount.RegisterOracle <CityQuery, TemperatureResponse>().WaitForFinish(TimeSpan.FromSeconds(30));
            CityTemperatureService svc = new CityTemperatureService();

            svc.Server = query;
            Task.Factory.StartNew(svc.Start);
            OracleClient <CityQuery, TemperatureResponse> reg = account.GetOracle <CityQuery, TemperatureResponse>(query.OracleId);
            TemperatureResponse resp = reg.Ask(new CityQuery {
                City = "montevideo"
            }).WaitForFinish(TimeSpan.FromSeconds(300));

            Assert.AreEqual(resp.TemperatureCelsius, 24);
            resp = reg.Ask(new CityQuery {
                City = "sofia"
            }).WaitForFinish(TimeSpan.FromSeconds(30));
            Assert.AreEqual(resp.TemperatureCelsius, 25);
            resp = reg.Ask(new CityQuery {
                City = "hell"
            }).WaitForFinish(TimeSpan.FromSeconds(30));
            Assert.AreEqual(resp.TemperatureCelsius, 2000);
            svc.Stop();
        }