コード例 #1
0
        public void ConnectableObservable_Connected()
        {
            var scheduler = new TestScheduler();

            var xs = scheduler.CreateHotObservable<int>(
                OnNext(210, 1),
                OnNext(220, 2),
                OnNext(230, 3),
                OnNext(240, 4),
                OnCompleted<int>(250)
            );

            var subject = new MySubject();

            var conn = new ConnectableObservable<int>(xs, subject);
            var disconnect = conn.Connect();

            var res = scheduler.Start(() => conn);

            res.Messages.AssertEqual(
                OnNext(210, 1),
                OnNext(220, 2),
                OnNext(230, 3),
                OnNext(240, 4),
                OnCompleted<int>(250)
            );
        }
コード例 #2
0
        public ActionResult DeleteConfirmed(int id)
        {
            MySubject mySubject = db.MySubjects.Find(id);

            db.MySubjects.Remove(mySubject);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #3
0
 public ActionResult Edit([Bind(Include = "MySubjectID,TeacherID,SubjectID")] MySubject mySubject)
 {
     if (ModelState.IsValid)
     {
         db.Entry(mySubject).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.SubjectID = new SelectList(db.Subjects, "SubjectID", "Name", mySubject.SubjectID);
     ViewBag.TeacherID = new SelectList(db.Teachers, "TeacherID", "Name", mySubject.TeacherID);
     return(View(mySubject));
 }
コード例 #4
0
        public ActionResult Create([Bind(Include = "MySubjectID,TeacherID,SubjectID")] MySubject mySubject)
        {
            if (ModelState.IsValid)
            {
                db.MySubjects.Add(mySubject);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.SubjectID = new SelectList(db.Subjects, "SubjectID", "Name", mySubject.SubjectID);
            ViewBag.TeacherID = new SelectList(db.Teachers, "TeacherID", "Name", mySubject.TeacherID);
            return(View(mySubject));
        }
コード例 #5
0
        // GET: MySubjects/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MySubject mySubject = db.MySubjects.Find(id);

            if (mySubject == null)
            {
                return(HttpNotFound());
            }
            return(View(mySubject));
        }
コード例 #6
0
 public void Dispose()
 {
     lock (_gate)
     {
         if (_parent == null)
         {
             return;
         }
         lock (_parent._gate)
         {
             _parent._observers?.Remove(_observer);
             _parent = null;
         }
     }
 }
コード例 #7
0
        // GET: MySubjects/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MySubject mySubject = db.MySubjects.Find(id);

            if (mySubject == null)
            {
                return(HttpNotFound());
            }
            ViewBag.SubjectID = new SelectList(db.Subjects, "SubjectID", "Name", mySubject.SubjectID);
            ViewBag.TeacherID = new SelectList(db.Teachers, "TeacherID", "Name", mySubject.TeacherID);
            return(View(mySubject));
        }
コード例 #8
0
        public void test_observer_notify()
        {
            MySubject subject = new MySubject();

            MyObserver[] observers = new MyObserver[] { new MyObserver(), new MyObserver() };

            foreach (MyObserver o in observers)
            {
                subject.attach(o);
            }

            subject.notify();

            foreach (MyObserver o in observers)
            {
                Assert.IsTrue(o.hasBeenNotified);
            }
        }
コード例 #9
0
        public void Test_Proxy()
        {
            int      result    = 0;
            ISubject mySubject = new MySubject();

            result = mySubject.Request("param1");
            Assert.AreEqual(1, result);

            ISubject myProxy = new MyProxy(mySubject);

            // adds 1000 for each proxy call

            result = myProxy.Request("param2");
            Assert.AreEqual(1001, result);

            result = myProxy.Request("param3");
            Assert.AreEqual(2001, result);

            result = myProxy.Request("");
            Assert.AreEqual(3001, result);
        }
コード例 #10
0
        public void 自作Subjectテスト()
        {
            var mySubject      = new MySubject <int>();
            var sampleObserver = new SampleObserver();

            var disposable = mySubject.Subscribe(sampleObserver);

            mySubject.OnNext(1);

            Assert.AreEqual(1, sampleObserver.Value, "受け取れてること");

            // 破棄
            disposable.Dispose();

            mySubject.OnNext(2);

            Assert.AreEqual(1, sampleObserver.Value, "破棄しているので更新されない");

            mySubject.OnCompleted();
            mySubject.Dispose();
        }
コード例 #11
0
        private List <ListViewItem> GetSchedules(MySubject msj)
        {
            List <MySchedule>   msc    = msj.Schedules;
            List <MySchedule>   unique = new List <MySchedule>();
            List <ListViewItem> items  = new List <ListViewItem>();

            foreach (MySchedule m in msc)
            {
                List <MySchedule> inUnique = unique.Where(s => s.FromTime.TimeOfDay == m.FromTime.TimeOfDay && s.ToTime.TimeOfDay == m.ToTime.TimeOfDay && s.Room.Equals(m.Room)).Select(s => s).ToList();
                if (inUnique.Count == 0)
                {
                    unique.Add(m);
                    List <MySchedule> getAllSameTime     = msc.Where(s => s.FromTime.TimeOfDay == m.FromTime.TimeOfDay && s.ToTime.TimeOfDay == m.ToTime.TimeOfDay && s.Room.Equals(m.Room)).OrderBy(s => s.Days).Select(s => s).ToList();
                    string            subjectCode        = msj.SubjectID;
                    string            subjectDesctiption = msj.SubjectDescription;
                    string            days = string.Empty;
                    string            time = getAllSameTime[0].FromTime.ToString("hh:mm tt") + " - " + getAllSameTime[0].ToTime.ToString("hh:mm tt");
                    string            room = getAllSameTime[0].Room;
                    if (getAllSameTime.Count > 1)
                    {
                        foreach (MySchedule sched in getAllSameTime)
                        {
                            days += GetDayEquivalent(sched.Days, true);
                        }
                    }
                    else
                    {
                        days = GetDayEquivalent(m.Days, false);
                    }
                    ListViewItem itm = new ListViewItem(subjectCode);
                    itm.SubItems.Add(subjectDesctiption);
                    itm.SubItems.Add(days);
                    itm.SubItems.Add(time);
                    itm.SubItems.Add(room);
                    items.Add(itm);
                }
            }
            return(items);
        }
コード例 #12
0
        public void RefCount_NotConnected()
        {
            var disconnected = false;
            var count = 0;
            var xs = Observable.Defer(() =>
            {
                count++;
                return Observable.Create<int>(obs =>
                {
                    return () => { disconnected = true; };
                });
            });

            var subject = new MySubject();

            var conn = new ConnectableObservable<int>(xs, subject);
            var refd = conn.RefCount();

            var dis1 = refd.Subscribe();
            Assert.AreEqual(1, count);
            Assert.AreEqual(1, subject.SubscribeCount);
            Assert.IsFalse(disconnected);

            var dis2 = refd.Subscribe();
            Assert.AreEqual(1, count);
            Assert.AreEqual(2, subject.SubscribeCount);
            Assert.IsFalse(disconnected);

            dis1.Dispose();
            Assert.IsFalse(disconnected);
            dis2.Dispose();
            Assert.IsTrue(disconnected);
            disconnected = false;

            var dis3 = refd.Subscribe();
            Assert.AreEqual(2, count);
            Assert.AreEqual(3, subject.SubscribeCount);
            Assert.IsFalse(disconnected);

            dis3.Dispose();
            Assert.IsTrue(disconnected);
        }
コード例 #13
0
        public void RefCount_ConnectsOnFirst()
        {
            var scheduler = new TestScheduler();

            var xs = scheduler.CreateHotObservable<int>(
                OnNext(210, 1),
                OnNext(220, 2),
                OnNext(230, 3),
                OnNext(240, 4),
                OnCompleted<int>(250)
            );

            var subject = new MySubject();

            var conn = new ConnectableObservable<int>(xs, subject);

            var res = scheduler.Start(() =>
                conn.RefCount()
            );

            res.Messages.AssertEqual(
                OnNext(210, 1),
                OnNext(220, 2),
                OnNext(230, 3),
                OnNext(240, 4),
                OnCompleted<int>(250)
            );

            Assert.IsTrue(subject.Disposed);
        }
コード例 #14
0
 public Subscription(MySubject <T> parent, IObserver <T> observer)
 {
     _Parent   = parent;
     _Observer = observer;
 }
コード例 #15
0
    void Awake()
    {
        _Subject = new MySubject <int>();

        StartCoroutine(CountCoroutine());
    }
コード例 #16
0
ファイル: MySubject.cs プロジェクト: horiK94/UniRx_UniTask
 public Subscription(MySubject <T> parent, IObserver <T> observer)
 {
     this.mySubject = parent;
     this.observer  = observer;
 }
コード例 #17
0
 public Subscription(IObserver <T> observer, MySubject <T> parent)
 {
     _observer = observer;
     _parent   = parent;
 }