Ejemplo n.º 1
0
    static void Main()
    {
        //Console.WriteLine("Hello, World!");
        Klass MyKlass = new Klass();

        // send this data to the new object(class)
        MyKlass.NewData = "there and back!";
        Console.WriteLine(MyKlass.passItOn());
    }
Ejemplo n.º 2
0
	public static int Main ()
	{
		var v = new Klass (new CInt (3));

		if (v.Value == 1)
			return 1;

		if (v.Value != 3)
			return 2;

		if (v.Value == null)
			return 3;

		var v2 = new Klass (null);

		if (v2.Value != null)
			return 4;

		Console.WriteLine ("OK");
		return 0;
	}
Ejemplo n.º 3
0
        /// <summary>
        ///     清空文章分类所有数据。
        /// </summary>
        public static void DeleteAll()
        {
            ObjektCollection <FeArticleCategory> list = Klass.ForId("FeArticleCategory@Klass").GetInstances <FeArticleCategory>();

            list.DeleteAll();
        }
Ejemplo n.º 4
0
        /// <summary>
        ///     添加删除业务逻辑。
        /// </summary>
        public override void BeforeDelete()
        {
            ObjektCollection <FeArticle> oc = new ObjektCollection <FeArticle>(Klass.ForId("FeArticle@Klass"), new WhereClause("\"category\" = '" + base.Id + "'"));

            if (oc.Count > 0)
            {
                throw new Exception("请先删除分类下的所有文章");
            }
            ObjektCollection <FeChannel> channelOc = new ObjektCollection <FeChannel>(Klass.ForId("FeChannel@Klass"), new WhereClause("\"category\" = '" + base.Id + "'"));

            if (channelOc.Count > 0)
            {
                throw new Exception("请先删除分类绑定的频道");
            }
            List <FeArticleCategory> children = GetChildren().ToList();

            foreach (FeArticleCategory item in children)
            {
                item.Delete();
                item.Save();
            }
            base.BeforeDelete();
        }
    static void Main()
    {
        if (debug)
        {
            Console.WriteLine("Started");
        }

        li_boost_shared_ptr.debug_shared = debug;

        // Change loop count to run for a long time to monitor memory
        const int loopCount = 1; //50000;

        for (int i = 0; i < loopCount; i++)
        {
            new runme().runtest();
            System.GC.Collect();
            System.GC.WaitForPendingFinalizers();
            if (i % 100 == 0)
            {
                System.Threading.Thread.Sleep(1); // give some time to the lower priority finalizer thread
            }
        }

        if (debug)
        {
            Console.WriteLine("Nearly finished");
        }

        int countdown = 100;

        while (true)
        {
            System.GC.Collect();
            System.GC.WaitForPendingFinalizers();
            System.Threading.Thread.Sleep(10);
            if (--countdown == 0)
            {
                break;
            }
            if (Klass.getTotal_count() == 1) // Expect 1 instance - the one global variable (GlobalValue)
            {
                break;
            }
        }
        ;
        if (Klass.getTotal_count() != 1)
        {
            throw new ApplicationException("Klass.total_count=" + Klass.getTotal_count());
        }

        int wrapper_count = li_boost_shared_ptr.shared_ptr_wrapper_count();

        if (wrapper_count != li_boost_shared_ptr.NOT_COUNTING)
        {
            if (wrapper_count != 1) // Expect 1 instance - the one global variable (GlobalSmartValue)
            {
                throw new ApplicationException("shared_ptr wrapper count=" + wrapper_count);
            }
        }

        if (debug)
        {
            Console.WriteLine("Finished");
        }
    }
Ejemplo n.º 6
0
    public void accessProtected()
    {
        string s = virtualMethod();

        if (s != "ProtectedBase")
        {
            throw new Exception("Failed");
        }

        Klass k = instanceMethod(new Klass("xyz"));

        if (k.getName() != "xyz")
        {
            throw new Exception("Failed");
        }

        k = instanceOverloaded(new Klass("xyz"));
        if (k.getName() != "xyz")
        {
            throw new Exception("Failed");
        }

        k = instanceOverloaded(new Klass("xyz"), "abc");
        if (k.getName() != "abc")
        {
            throw new Exception("Failed");
        }

        k = ProtectedBase.staticMethod(new Klass("abc"));
        if (k.getName() != "abc")
        {
            throw new Exception("Failed");
        }

        k = ProtectedBase.staticOverloaded(new Klass("xyz"));
        if (k.getName() != "xyz")
        {
            throw new Exception("Failed");
        }

        k = ProtectedBase.staticOverloaded(new Klass("xyz"), "abc");
        if (k.getName() != "abc")
        {
            throw new Exception("Failed");
        }

        instanceMemberVariable = 30;
        int i = instanceMemberVariable;

        if (i != 30)
        {
            throw new Exception("Failed");
        }

        staticMemberVariable = 40;
        i = staticMemberVariable;
        if (i != 40)
        {
            throw new Exception("Failed");
        }

        i = staticConstMemberVariable;
        if (i != 20)
        {
            throw new Exception("Failed");
        }

        anEnum = ProtectedBase.AnEnum.EnumVal1;
        ProtectedBase.AnEnum ae = anEnum;
        if (ae != ProtectedBase.AnEnum.EnumVal1)
        {
            throw new Exception("Failed");
        }
    }
 private void verifyCount(int expected, Klass k)
 {
     int got = li_boost_shared_ptr.use_count(k);
     if (expected != got)
       throw new Exception("verify use_count failed. Expected: " + expected + " Got: " + got);
 }
Ejemplo n.º 8
0
	public static int Main ()
	{
		var v = new Klass (3);
		return v.Value.Value - 3;
	}
    static void Main()
    {
        int f = overload_template.foo();

          f += overload_template.max(3,4);
          double b = overload_template.max(3.4,5.2);
          b++; // warning suppression

          // mix 1
          if (overload_template.mix1("hi") != 101)
        throw new Exception ("mix1(const char*)");

          if (overload_template.mix1(1.0, 1.0) != 102)
        throw new Exception ("mix1(double, const double &)");

          if (overload_template.mix1(1.0) != 103)
        throw new Exception ("mix1(double)");

          // mix 2
          if (overload_template.mix2("hi") != 101)
        throw new Exception ("mix2(const char*)");

          if (overload_template.mix2(1.0, 1.0) != 102)
        throw new Exception ("mix2(double, const double &)");

          if (overload_template.mix2(1.0) != 103)
        throw new Exception ("mix2(double)");

          // mix 3
          if (overload_template.mix3("hi") != 101)
        throw new Exception ("mix3(const char*)");

          if (overload_template.mix3(1.0, 1.0) != 102)
        throw new Exception ("mix3(double, const double &)");

          if (overload_template.mix3(1.0) != 103)
        throw new Exception ("mix3(double)");

          // Combination 1
          if (overload_template.overtparams1(100) != 10)
        throw new Exception ("overtparams1(int)");

          if (overload_template.overtparams1(100.0, 100) != 20)
        throw new Exception ("overtparams1(double, int)");

          // Combination 2
          if (overload_template.overtparams2(100.0, 100) != 40)
        throw new Exception ("overtparams2(double, int)");

          // Combination 3
          if (overload_template.overloaded() != 60)
        throw new Exception ("overloaded()");

          if (overload_template.overloaded(100.0, 100) != 70)
        throw new Exception ("overloaded(double, int)");

          // Combination 4
          if (overload_template.overloadedagain("hello") != 80)
        throw new Exception ("overloadedagain(const char *)");

          if (overload_template.overloadedagain() != 90)
        throw new Exception ("overloadedagain(double)");

          // specializations
          if (overload_template.specialization(10) != 202)
        throw new Exception ("specialization(int)");

          if (overload_template.specialization(10.0) != 203)
        throw new Exception ("specialization(double)");

          if (overload_template.specialization(10, 10) != 204)
        throw new Exception ("specialization(int, int)");

          if (overload_template.specialization(10.0, 10.0) != 205)
        throw new Exception ("specialization(double, double)");

          if (overload_template.specialization("hi", "hi") != 201)
        throw new Exception ("specialization(const char *, const char *)");

          // simple specialization
          overload_template.xyz();
          overload_template.xyz_int();
          overload_template.xyz_double();

          // a bit of everything
          if (overload_template.overload("hi") != 0)
        throw new Exception ("overload()");

          if (overload_template.overload(1) != 10)
        throw new Exception ("overload(int t)");

          if (overload_template.overload(1, 1) != 20)
        throw new Exception ("overload(int t, const int &)");

          if (overload_template.overload(1, "hello") != 30)
        throw new Exception ("overload(int t, const char *)");

          Klass k = new Klass();
          if (overload_template.overload(k) != 10)
        throw new Exception ("overload(Klass t)");

          if (overload_template.overload(k, k) != 20)
        throw new Exception ("overload(Klass t, const Klass &)");

          if (overload_template.overload(k, "hello") != 30)
        throw new Exception ("overload(Klass t, const char *)");

          if (overload_template.overload(10.0, "hi") != 40)
        throw new Exception ("overload(double t, const char *)");

          if (overload_template.overload() != 50)
        throw new Exception ("overload(const char *)");

          // everything put in a namespace
          if (overload_template.nsoverload("hi") != 1000)
        throw new Exception ("nsoverload()");

          if (overload_template.nsoverload(1) != 1010)
        throw new Exception ("nsoverload(int t)");

          if (overload_template.nsoverload(1, 1) != 1020)
        throw new Exception ("nsoverload(int t, const int &)");

          if (overload_template.nsoverload(1, "hello") != 1030)
        throw new Exception ("nsoverload(int t, const char *)");

          if (overload_template.nsoverload(k) != 1010)
        throw new Exception ("nsoverload(Klass t)");

          if (overload_template.nsoverload(k, k) != 1020)
        throw new Exception ("nsoverload(Klass t, const Klass &)");

          if (overload_template.nsoverload(k, "hello") != 1030)
        throw new Exception ("nsoverload(Klass t, const char *)");

          if (overload_template.nsoverload(10.0, "hi") != 1040)
        throw new Exception ("nsoverload(double t, const char *)");

          if (overload_template.nsoverload() != 1050)
        throw new Exception ("nsoverload(const char *)");
    }
Ejemplo n.º 10
0
        /// <summary>
        /// 查询tag关键字。
        /// 根据value模糊查询。
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static List <FeTag> FindTags(string value)
        {
            ObjektCollection <FeTag> oc = new ObjektCollection <FeTag>(Klass.ForId("FeTag@Klass"), new WhereClause("\"tag\" like '%" + value + "%'"));

            return(oc.ToList());
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 设置指定对象的seo关键字。
        /// </summary>
        /// <param name="keys"></param>
        /// <param name="relationshipName"></param>
        /// <param name="sourceId"></param>
        public static void SetObjektSeo(List <string> keys, string relationshipName, string sourceId)
        {
            List <FeSeoKey> entityKeys = new List <FeSeoKey>();

            foreach (string key in keys)
            {
                FeSeoKey entity = new ObjektCollection <FeSeoKey>(Klass.ForId("FeSeoKey@Klass"), new WhereClause("\"key\" = '" + key + "'")).TryGetSingleResult();
                if (entity == null)
                {
                    entity     = new FeSeoKey();
                    entity.Key = key;
                    entity.Save();
                }
                IEnumerable <FeSeoKey> query = from t in entityKeys
                                               where t.Key == entity.Key
                                               select t;
                if (query.Count() == 0)
                {
                    entityKeys.Add(entity);
                }
            }
            Objekt objekt = ObjektFactory.Find(sourceId);
            List <RelationshipObjekt> relationshipList = objekt.ROCC.GetROC(relationshipName).ToList();
            List <RelationshipObjekt> deleteList       = new List <RelationshipObjekt>();

            foreach (RelationshipObjekt item3 in relationshipList)
            {
                IEnumerable <FeSeoKey> existQuery2 = from t in entityKeys
                                                     where t.Id == item3.Related.Id
                                                     select t;
                if (existQuery2.Count() == 0)
                {
                    deleteList.Add(item3);
                }
            }
            foreach (RelationshipObjekt item4 in deleteList)
            {
                item4.Delete();
                item4.Save();
            }
            foreach (FeSeoKey item5 in entityKeys)
            {
                IEnumerable <RelationshipObjekt> existQuery = from t in relationshipList
                                                              where t.Related.Id == item5.Id
                                                              select t;
                if (existQuery.Count() == 0)
                {
                    RelationshipObjekt relationship = ObjektFactory.New <RelationshipObjekt>(Klass.ForName(relationshipName));
                    relationship.Source  = objekt;
                    relationship.Related = item5;
                    relationship.Save();
                }
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 查询seo关键字。
        /// 根据value模糊查询。
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static List <FeSeoKey> FindSeoKes(string value)
        {
            ObjektCollection <FeSeoKey> oc = new ObjektCollection <FeSeoKey>(Klass.ForId("FeSeoKey@Klass"), new WhereClause("\"key\" like '%" + value + "%'"));

            return(oc.ToList());
        }
Ejemplo n.º 13
0
 public Deck(Klass klass, bool standard)
     : this()
 {
     Klass      = klass;
     IsStandard = standard;
 }
    public static void Main()
    {
        Klass k1 = li_std_auto_ptr.makeKlassAutoPtr("first");

        if (k1.getLabel() != "first")
        {
            throw new Exception("wrong object label");
        }

        Klass k2 = li_std_auto_ptr.makeKlassAutoPtr("second");

        if (Klass.getTotal_count() != 2)
        {
            throw new Exception("number of objects should be 2");
        }

        using (Klass k3 = li_std_auto_ptr.makeKlassAutoPtr("second")) {
            if (Klass.getTotal_count() != 3)
            {
                throw new Exception("number of objects should be 3");
            }
        }
        if (Klass.getTotal_count() != 2)
        {
            throw new Exception("number of objects should be 2");
        }

        k1 = null;
        {
            int countdown     = 500;
            int expectedCount = 1;
            while (true)
            {
                WaitForGC();
                if (--countdown == 0)
                {
                    break;
                }
                if (Klass.getTotal_count() == expectedCount)
                {
                    break;
                }
            }
            ;
            int actualCount = Klass.getTotal_count();
            if (actualCount != expectedCount)
            {
                Console.Error.WriteLine("Expected count: " + expectedCount + " Actual count: " + actualCount); // Finalizers are not guaranteed to be run and sometimes they just don't
            }
        }

        if (k2.getLabel() != "second")
        {
            throw new Exception("wrong object label");
        }

        k2 = null;
        {
            int countdown     = 500;
            int expectedCount = 0;
            while (true)
            {
                WaitForGC();
                if (--countdown == 0)
                {
                    break;
                }
                if (Klass.getTotal_count() == expectedCount)
                {
                    break;
                }
            }
            int actualCount = Klass.getTotal_count();
            if (actualCount != expectedCount)
            {
                Console.Error.WriteLine("Expected count: " + expectedCount + " Actual count: " + actualCount); // Finalizers are not guaranteed to be run and sometimes they just don't
            }
        }
    }
    public static int Main()
    {
        var v = new Klass(3);

        return(v.Value.Value - 3);
    }
Ejemplo n.º 16
0
 private ObjektCollection <FeArticleCategory> GetChildren()
 {
     return(new ObjektCollection <FeArticleCategory>(Klass.ForId("FeArticleCategory@Klass"), new WhereClause("\"parent\" = '" + base.Id + "'")));
 }
Ejemplo n.º 17
0
        /// <summary>
        /// 创建新增对象排序。
        /// </summary>
        /// <returns></returns>
        public static decimal NewSortOrder()
        {
            ObjektCollection <FeArticleCategory> oc = new ObjektCollection <FeArticleCategory>(Klass.ForId("FeArticleCategory@Klass"), new WhereClause("\"sortOrder\" is not null"));

            oc.OrderByClause.Add(new OrderByCell("sortOrder", Order.Desc));
            FeArticleCategory entity = oc.FirstOrDefault();
            int sort2 = 1;

            if (entity != null && entity.IsExists() && entity.SortOrder.HasValue)
            {
                sort2 = (int)entity.SortOrder.Value;
                sort2++;
            }
            return(sort2);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 设置指定对象的seo关键字。
        /// </summary>
        /// <param name="tags"></param>
        /// <param name="relationshipName"></param>
        /// <param name="sourceId"></param>
        public static void SetObjektTag(List <string> tags, string relationshipName, string sourceId)
        {
            List <FeTag> entityTags = new List <FeTag>();

            foreach (string tag in tags)
            {
                FeTag entity = new ObjektCollection <FeTag>(Klass.ForId("FeTag@Klass"), new WhereClause("\"tag\" = '" + tag + "'")).TryGetSingleResult();
                if (entity == null)
                {
                    entity      = new FeTag();
                    entity.Tag  = tag;
                    entity.From = ObjektFactory.Find <Value>("75d290896b3d40ad802c9d6b04d61a9b@Value");
                    entity.Save();
                }
                IEnumerable <FeTag> query = from t in entityTags
                                            where t.Tag == entity.Tag
                                            select t;
                if (query.Count() == 0)
                {
                    entityTags.Add(entity);
                }
            }
            Objekt objekt = ObjektFactory.Find(sourceId);
            List <RelationshipObjekt> relationshipList = objekt.ROCC.GetROC(relationshipName).ToList();

            foreach (RelationshipObjekt item2 in relationshipList)
            {
                item2.Delete();
                item2.Save();
            }
            foreach (FeTag item3 in entityTags)
            {
                RelationshipObjekt relationship = ObjektFactory.New <RelationshipObjekt>(Klass.ForName(relationshipName));
                relationship.Source  = objekt;
                relationship.Related = item3;
                relationship.Save();
            }
        }
Ejemplo n.º 19
0
 private void CopyKlass()
 {
     _clipboard = (Klass)_selectedKlass.Clone();
 }
    static void Main()
    {
        if (debug)
        {
            Console.WriteLine("Started");
        }

        li_boost_shared_ptr.debug_shared = debug;

        // Change loop count to run for a long time to monitor memory
        const int loopCount = 1; //50000;

        for (int i = 0; i < loopCount; i++)
        {
            new runme().runtest();
            System.GC.Collect();
            System.GC.WaitForPendingFinalizers();
            if (i % 100 == 0)
            {
                System.Threading.Thread.Sleep(1); // give some time to the lower priority finalizer thread
            }
        }

        if (debug)
        {
            Console.WriteLine("Nearly finished");
        }

        {
            int countdown     = 500;
            int expectedCount = 1;
            while (true)
            {
                WaitForGC();
                if (--countdown == 0)
                {
                    break;
                }
                if (Klass.getTotal_count() == expectedCount) // Expect the one global variable (GlobalValue)
                {
                    break;
                }
            }
            int actualCount = Klass.getTotal_count();
            if (actualCount != expectedCount)
            {
                Console.Error.WriteLine("Expected count: " + expectedCount + " Actual count: " + actualCount); // Finalizers are not guaranteed to be run and sometimes they just don't
            }
        }

        int wrapper_count = li_boost_shared_ptr.shared_ptr_wrapper_count();

        if (wrapper_count != li_boost_shared_ptr.NOT_COUNTING)
        {
            if (wrapper_count != 1) // Expect the one global variable (GlobalSmartValue)
            {
                throw new ApplicationException("shared_ptr wrapper count=" + wrapper_count);
            }
        }

        if (debug)
        {
            Console.WriteLine("Finished");
        }
    }
Ejemplo n.º 21
0
    private void runtest()
    {
        // simple shared_ptr usage - created in C++
        {
          Klass k = new Klass("me oh my");
          String val = k.getValue();
          verifyValue("me oh my", val);
          verifyCount(1, k);
        }

        // simple shared_ptr usage - not created in C++
        {
          Klass k = li_boost_shared_ptr.factorycreate();
          String val = k.getValue();
          verifyValue("factorycreate", val);
          verifyCount(1, k);
        }

        // pass by shared_ptr
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointertest", val);
          verifyCount(2, k);
          verifyCount(2, kret);
        }

        // pass by shared_ptr pointer
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointerpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointerpointertest", val);
          verifyCount(2, k);
          verifyCount(2, kret);
        }

        // pass by shared_ptr reference
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointerreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointerreftest", val);
          verifyCount(2, k);
          verifyCount(2, kret);
        }

        // pass by shared_ptr pointer reference
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointerpointerreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointerpointerreftest", val);
          verifyCount(2, k);
          verifyCount(2, kret);
        }

        // const pass by shared_ptr
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.constsmartpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my", val);
          verifyCount(2, k);
          verifyCount(2, kret);
        }

        // const pass by shared_ptr pointer
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.constsmartpointerpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my", val);
          verifyCount(2, k);
          verifyCount(2, kret);
        }

        // const pass by shared_ptr reference
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.constsmartpointerreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my", val);
          verifyCount(2, k);
          verifyCount(2, kret);
        }

        // pass by value
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.valuetest(k);
          String val = kret.getValue();
          verifyValue("me oh my valuetest", val);
          verifyCount(1, k);
          verifyCount(1, kret);
        }

        // pass by pointer
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.pointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my pointertest", val);
          verifyCount(1, k);
          verifyCount(1, kret);
        }

        // pass by reference
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.reftest(k);
          String val = kret.getValue();
          verifyValue("me oh my reftest", val);
          verifyCount(1, k);
          verifyCount(1, kret);
        }

        // pass by pointer reference
        {
          Klass k = new Klass("me oh my");
          Klass kret = li_boost_shared_ptr.pointerreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my pointerreftest", val);
          verifyCount(1, k);
          verifyCount(1, kret);
        }

        // null tests
        {
          Klass k = null;

          // TODO: add in const versions too
          if (li_boost_shared_ptr.smartpointertest(k) != null)
        throw new ApplicationException("return was not null");

          if (li_boost_shared_ptr.smartpointerpointertest(k) != null)
        throw new ApplicationException("return was not null");

          if (li_boost_shared_ptr.smartpointerreftest(k) != null)
        throw new ApplicationException("return was not null");

          if (li_boost_shared_ptr.smartpointerpointerreftest(k) != null)
        throw new ApplicationException("return was not null");

          if (li_boost_shared_ptr.nullsmartpointerpointertest(null) != "null pointer")
        throw new ApplicationException("not null smartpointer pointer");

          try { li_boost_shared_ptr.valuetest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}

          if (li_boost_shared_ptr.pointertest(k) != null)
        throw new ApplicationException("return was not null");

          try { li_boost_shared_ptr.reftest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }

        // $owner
        {
          Klass k = li_boost_shared_ptr.pointerownertest();
          String val = k.getValue();
          verifyValue("pointerownertest", val);
          verifyCount(1, k);
        }
        {
          Klass k = li_boost_shared_ptr.smartpointerpointerownertest();
          String val = k.getValue();
          verifyValue("smartpointerpointerownertest", val);
          verifyCount(1, k);
        }

        ////////////////////////////////// Derived classes ////////////////////////////////////////
        // derived pass by shared_ptr
        {
          KlassDerived k = new KlassDerived("me oh my");
          KlassDerived kret = li_boost_shared_ptr.derivedsmartptrtest(k);
          String val = kret.getValue();
          verifyValue("me oh my derivedsmartptrtest-Derived", val);
          verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
          verifyCount(4, kret);
        }
        // derived pass by shared_ptr pointer
        {
          KlassDerived k = new KlassDerived("me oh my");
          KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my derivedsmartptrpointertest-Derived", val);
          verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
          verifyCount(4, kret);
        }
        // derived pass by shared_ptr ref
        {
          KlassDerived k = new KlassDerived("me oh my");
          KlassDerived kret = li_boost_shared_ptr.derivedsmartptrreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my derivedsmartptrreftest-Derived", val);
          verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
          verifyCount(4, kret);
        }
        // derived pass by shared_ptr pointer ref
        {
          KlassDerived k = new KlassDerived("me oh my");
          KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointerreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my derivedsmartptrpointerreftest-Derived", val);
          verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
          verifyCount(4, kret);
        }
        // derived pass by pointer
        {
          KlassDerived k = new KlassDerived("me oh my");
          KlassDerived kret = li_boost_shared_ptr.derivedpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my derivedpointertest-Derived", val);
          verifyCount(2, k); // includes an extra reference for the upcast in the proxy class
          verifyCount(2, kret);
        }
        // derived pass by ref
        {
          KlassDerived k = new KlassDerived("me oh my");
          KlassDerived kret = li_boost_shared_ptr.derivedreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my derivedreftest-Derived", val);
          verifyCount(2, k); // includes an extra reference for the upcast in the proxy class
          verifyCount(2, kret);
        }

        ////////////////////////////////// Derived and base class mixed ////////////////////////////////////////
        // pass by shared_ptr (mixed)
        {
          Klass k = new KlassDerived("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointertest-Derived", val);
          verifyCount(3, k); // an extra reference for the upcast in the proxy class
          verifyCount(3, kret);
        }

        // pass by shared_ptr pointer (mixed)
        {
          Klass k = new KlassDerived("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointerpointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointerpointertest-Derived", val);
          verifyCount(3, k); // an extra reference for the upcast in the proxy class
          verifyCount(3, kret);
        }

        // pass by shared_ptr reference (mixed)
        {
          Klass k = new KlassDerived("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointerreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointerreftest-Derived", val);
          verifyCount(3, k); // an extra reference for the upcast in the proxy class
          verifyCount(3, kret);
        }

        // pass by shared_ptr pointer reference (mixed)
        {
          Klass k = new KlassDerived("me oh my");
          Klass kret = li_boost_shared_ptr.smartpointerpointerreftest(k);
          String val = kret.getValue();
          verifyValue("me oh my smartpointerpointerreftest-Derived", val);
          verifyCount(3, k); // an extra reference for the upcast in the proxy class
          verifyCount(3, kret);
        }

        // pass by value (mixed)
        {
          Klass k = new KlassDerived("me oh my");
          Klass kret = li_boost_shared_ptr.valuetest(k);
          String val = kret.getValue();
          verifyValue("me oh my valuetest", val); // note slicing
          verifyCount(2, k); // an extra reference for the upcast in the proxy class
          verifyCount(1, kret);
        }

        // pass by pointer (mixed)
        {
          Klass k = new KlassDerived("me oh my");
          Klass kret = li_boost_shared_ptr.pointertest(k);
          String val = kret.getValue();
          verifyValue("me oh my pointertest-Derived", val);
          verifyCount(2, k); // an extra reference for the upcast in the proxy class
          verifyCount(1, kret);
        }

        // pass by ref (mixed)
        {
          Klass k = new KlassDerived("me oh my");
          Klass kret = li_boost_shared_ptr.reftest(k);
          String val = kret.getValue();
          verifyValue("me oh my reftest-Derived", val);
          verifyCount(2, k); // an extra reference for the upcast in the proxy class
          verifyCount(1, kret);
        }

        // 3rd derived class
        {
          Klass k = new Klass3rdDerived("me oh my");
          String val = k.getValue();
          verifyValue("me oh my-3rdDerived", val);
          verifyCount(3, k); // 3 classes in inheritance chain == 3 swigCPtr values
          val = li_boost_shared_ptr.test3rdupcast(k);
          verifyValue("me oh my-3rdDerived", val);
          verifyCount(3, k);
        }

        ////////////////////////////////// Member variables ////////////////////////////////////////
        // smart pointer by value
        {
          MemberVariables m = new MemberVariables();
          Klass k = new Klass("smart member value");
          m.SmartMemberValue = k;
          String val = k.getValue();
          verifyValue("smart member value", val);
          verifyCount(2, k);

          Klass kmember = m.SmartMemberValue;
          val = kmember.getValue();
          verifyValue("smart member value", val);
          verifyCount(3, kmember);
          verifyCount(3, k);

          m.Dispose();
          verifyCount(2, kmember);
          verifyCount(2, k);
        }
        // smart pointer by pointer
        {
          MemberVariables m = new MemberVariables();
          Klass k = new Klass("smart member pointer");
          m.SmartMemberPointer = k;
          String val = k.getValue();
          verifyValue("smart member pointer", val);
          verifyCount(1, k);

          Klass kmember = m.SmartMemberPointer;
          val = kmember.getValue();
          verifyValue("smart member pointer", val);
          verifyCount(2, kmember);
          verifyCount(2, k);

          m.Dispose();
          verifyCount(2, kmember);
          verifyCount(2, k);
        }
        // smart pointer by reference
        {
          MemberVariables m = new MemberVariables();
          Klass k = new Klass("smart member reference");
          m.SmartMemberReference = k;
          String val = k.getValue();
          verifyValue("smart member reference", val);
          verifyCount(2, k);

          Klass kmember = m.SmartMemberReference;
          val = kmember.getValue();
          verifyValue("smart member reference", val);
          verifyCount(3, kmember);
          verifyCount(3, k);

          // The C++ reference refers to SmartMemberValue...
          Klass kmemberVal = m.SmartMemberValue;
          val = kmember.getValue();
          verifyValue("smart member reference", val);
          verifyCount(4, kmemberVal);
          verifyCount(4, kmember);
          verifyCount(4, k);

          m.Dispose();
          verifyCount(3, kmember);
          verifyCount(3, k);
        }
        // plain by value
        {
          MemberVariables m = new MemberVariables();
          Klass k = new Klass("plain member value");
          m.MemberValue = k;
          String val = k.getValue();
          verifyValue("plain member value", val);
          verifyCount(1, k);

          Klass kmember = m.MemberValue;
          val = kmember.getValue();
          verifyValue("plain member value", val);
          verifyCount(1, kmember);
          verifyCount(1, k);

          m.Dispose();
          verifyCount(1, kmember);
          verifyCount(1, k);
        }
        // plain by pointer
        {
          MemberVariables m = new MemberVariables();
          Klass k = new Klass("plain member pointer");
          m.MemberPointer = k;
          String val = k.getValue();
          verifyValue("plain member pointer", val);
          verifyCount(1, k);

          Klass kmember = m.MemberPointer;
          val = kmember.getValue();
          verifyValue("plain member pointer", val);
          verifyCount(1, kmember);
          verifyCount(1, k);

          m.Dispose();
          verifyCount(1, kmember);
          verifyCount(1, k);
        }
        // plain by reference
        {
          MemberVariables m = new MemberVariables();
          Klass k = new Klass("plain member reference");
          m.MemberReference = k;
          String val = k.getValue();
          verifyValue("plain member reference", val);
          verifyCount(1, k);

          Klass kmember = m.MemberReference;
          val = kmember.getValue();
          verifyValue("plain member reference", val);
          verifyCount(1, kmember);
          verifyCount(1, k);

          m.Dispose();
          verifyCount(1, kmember);
          verifyCount(1, k);
        }

        // null member variables
        {
          MemberVariables m = new MemberVariables();

          // shared_ptr by value
          Klass k = m.SmartMemberValue;
          if (k != null)
        throw new ApplicationException("expected null");
          m.SmartMemberValue = null;
          k = m.SmartMemberValue;
          if (k != null)
        throw new ApplicationException("expected null");
          verifyCount(0, k);

          // plain by value
          try { m.MemberValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }

        ////////////////////////////////// Global variables ////////////////////////////////////////
        // smart pointer
        {
          Klass kglobal = li_boost_shared_ptr.GlobalSmartValue;
          if (kglobal != null)
        throw new ApplicationException("expected null");

          Klass k = new Klass("smart global value");
          li_boost_shared_ptr.GlobalSmartValue = k;
          verifyCount(2, k);

          kglobal = li_boost_shared_ptr.GlobalSmartValue;
          String val = kglobal.getValue();
          verifyValue("smart global value", val);
          verifyCount(3, kglobal);
          verifyCount(3, k);
          verifyValue("smart global value", li_boost_shared_ptr.GlobalSmartValue.getValue());
          li_boost_shared_ptr.GlobalSmartValue = null;
        }
        // plain value
        {
          Klass kglobal;

          Klass k = new Klass("global value");
          li_boost_shared_ptr.GlobalValue = k;
          verifyCount(1, k);

          kglobal = li_boost_shared_ptr.GlobalValue;
          String val = kglobal.getValue();
          verifyValue("global value", val);
          verifyCount(1, kglobal);
          verifyCount(1, k);
          verifyValue("global value", li_boost_shared_ptr.GlobalValue.getValue());

          try { li_boost_shared_ptr.GlobalValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }
        // plain pointer
        {
          Klass kglobal = li_boost_shared_ptr.GlobalPointer;
          if (kglobal != null)
        throw new ApplicationException("expected null");

          Klass k = new Klass("global pointer");
          li_boost_shared_ptr.GlobalPointer = k;
          verifyCount(1, k);

          kglobal = li_boost_shared_ptr.GlobalPointer;
          String val = kglobal.getValue();
          verifyValue("global pointer", val);
          verifyCount(1, kglobal);
          verifyCount(1, k);
          li_boost_shared_ptr.GlobalPointer = null;
        }
        // plain reference
        {
          Klass kglobal;

          Klass k = new Klass("global reference");
          li_boost_shared_ptr.GlobalReference = k;
          verifyCount(1, k);

          kglobal = li_boost_shared_ptr.GlobalReference;
          String val = kglobal.getValue();
          verifyValue("global reference", val);
          verifyCount(1, kglobal);
          verifyCount(1, k);

          try { li_boost_shared_ptr.GlobalReference = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }

        ////////////////////////////////// Templates ////////////////////////////////////////
        {
          PairIntDouble pid = new PairIntDouble(10, 20.2);
          if (pid.baseVal1 != 20 || pid.baseVal2 != 40.4)
        throw new ApplicationException("Base values wrong");
          if (pid.val1 != 10 || pid.val2 != 20.2)
        throw new ApplicationException("Derived Values wrong");
        }
    }
Ejemplo n.º 22
0
    public static void Main()
    {
        Klass k1 = li_std_auto_ptr.makeKlassAutoPtr("first");

        if (k1.getLabel() != "first")
        {
            throw new Exception("wrong object label");
        }

        Klass k2 = li_std_auto_ptr.makeKlassAutoPtr("second");

        if (Klass.getTotal_count() != 2)
        {
            throw new Exception("number of objects should be 2");
        }

        k1 = null;
        {
            int countdown     = 500;
            int expectedCount = 1;
            while (true)
            {
                WaitForGC();
                if (--countdown == 0)
                {
                    break;
                }
                if (Klass.getTotal_count() == expectedCount)
                {
                    break;
                }
            }
            ;
            int actualCount = Klass.getTotal_count();
            if (actualCount != expectedCount)
            {
                throw new ApplicationException("Expected count: " + expectedCount + " Actual count: " + actualCount);
            }
        }

        if (k2.getLabel() != "second")
        {
            throw new Exception("wrong object label");
        }

        k2 = null;
        {
            int countdown     = 500;
            int expectedCount = 0;
            while (true)
            {
                WaitForGC();
                if (--countdown == 0)
                {
                    break;
                }
                if (Klass.getTotal_count() == expectedCount)
                {
                    break;
                }
            }
            int actualCount = Klass.getTotal_count();
            if (actualCount != expectedCount)
            {
                throw new ApplicationException("Expected count: " + expectedCount + " Actual count: " + actualCount);
            }
        }
    }
    private void runtest()
    {
        // simple shared_ptr usage - created in C++
        {
            Klass  k   = new Klass("me oh my");
            String val = k.getValue();
            verifyValue("me oh my", val);
            verifyCount(1, k);
        }

        // simple shared_ptr usage - not created in C++
        {
            Klass  k   = li_boost_shared_ptr.factorycreate();
            String val = k.getValue();
            verifyValue("factorycreate", val);
            verifyCount(1, k);
        }

        // pass by shared_ptr
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointertest", val);
            verifyCount(2, k);
            verifyCount(2, kret);
        }

        // pass by shared_ptr pointer
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointerpointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointerpointertest", val);
            verifyCount(2, k);
            verifyCount(2, kret);
        }

        // pass by shared_ptr reference
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointerreftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointerreftest", val);
            verifyCount(2, k);
            verifyCount(2, kret);
        }

        // pass by shared_ptr pointer reference
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointerpointerreftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointerpointerreftest", val);
            verifyCount(2, k);
            verifyCount(2, kret);
        }

        // const pass by shared_ptr
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.constsmartpointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my", val);
            verifyCount(2, k);
            verifyCount(2, kret);
        }

        // const pass by shared_ptr pointer
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.constsmartpointerpointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my", val);
            verifyCount(2, k);
            verifyCount(2, kret);
        }

        // const pass by shared_ptr reference
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.constsmartpointerreftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my", val);
            verifyCount(2, k);
            verifyCount(2, kret);
        }

        // pass by value
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.valuetest(k);
            String val  = kret.getValue();
            verifyValue("me oh my valuetest", val);
            verifyCount(1, k);
            verifyCount(1, kret);
        }

        // pass by pointer
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.pointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my pointertest", val);
            verifyCount(1, k);
            verifyCount(1, kret);
        }

        // pass by reference
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.reftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my reftest", val);
            verifyCount(1, k);
            verifyCount(1, kret);
        }

        // pass by pointer reference
        {
            Klass  k    = new Klass("me oh my");
            Klass  kret = li_boost_shared_ptr.pointerreftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my pointerreftest", val);
            verifyCount(1, k);
            verifyCount(1, kret);
        }

        // null tests
        {
            Klass k = null;

            // TODO: add in const versions too
            if (li_boost_shared_ptr.smartpointertest(k) != null)
            {
                throw new ApplicationException("return was not null");
            }

            if (li_boost_shared_ptr.smartpointerpointertest(k) != null)
            {
                throw new ApplicationException("return was not null");
            }

            if (li_boost_shared_ptr.smartpointerreftest(k) != null)
            {
                throw new ApplicationException("return was not null");
            }

            if (li_boost_shared_ptr.smartpointerpointerreftest(k) != null)
            {
                throw new ApplicationException("return was not null");
            }

            if (li_boost_shared_ptr.nullsmartpointerpointertest(null) != "null pointer")
            {
                throw new ApplicationException("not null smartpointer pointer");
            }

            try { li_boost_shared_ptr.valuetest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}

            if (li_boost_shared_ptr.pointertest(k) != null)
            {
                throw new ApplicationException("return was not null");
            }

            try { li_boost_shared_ptr.reftest(k); throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }

        // $owner
        {
            Klass  k   = li_boost_shared_ptr.pointerownertest();
            String val = k.getValue();
            verifyValue("pointerownertest", val);
            verifyCount(1, k);
        }
        {
            Klass  k   = li_boost_shared_ptr.smartpointerpointerownertest();
            String val = k.getValue();
            verifyValue("smartpointerpointerownertest", val);
            verifyCount(1, k);
        }

        ////////////////////////////////// Derived classes ////////////////////////////////////////
        // derived pass by shared_ptr
        {
            KlassDerived k    = new KlassDerived("me oh my");
            KlassDerived kret = li_boost_shared_ptr.derivedsmartptrtest(k);
            String       val  = kret.getValue();
            verifyValue("me oh my derivedsmartptrtest-Derived", val);
            verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
            verifyCount(4, kret);
        }
        // derived pass by shared_ptr pointer
        {
            KlassDerived k    = new KlassDerived("me oh my");
            KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointertest(k);
            String       val  = kret.getValue();
            verifyValue("me oh my derivedsmartptrpointertest-Derived", val);
            verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
            verifyCount(4, kret);
        }
        // derived pass by shared_ptr ref
        {
            KlassDerived k    = new KlassDerived("me oh my");
            KlassDerived kret = li_boost_shared_ptr.derivedsmartptrreftest(k);
            String       val  = kret.getValue();
            verifyValue("me oh my derivedsmartptrreftest-Derived", val);
            verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
            verifyCount(4, kret);
        }
        // derived pass by shared_ptr pointer ref
        {
            KlassDerived k    = new KlassDerived("me oh my");
            KlassDerived kret = li_boost_shared_ptr.derivedsmartptrpointerreftest(k);
            String       val  = kret.getValue();
            verifyValue("me oh my derivedsmartptrpointerreftest-Derived", val);
            verifyCount(4, k); // includes two extra references for upcasts in the proxy classes
            verifyCount(4, kret);
        }
        // derived pass by pointer
        {
            KlassDerived k    = new KlassDerived("me oh my");
            KlassDerived kret = li_boost_shared_ptr.derivedpointertest(k);
            String       val  = kret.getValue();
            verifyValue("me oh my derivedpointertest-Derived", val);
            verifyCount(2, k); // includes an extra reference for the upcast in the proxy class
            verifyCount(2, kret);
        }
        // derived pass by ref
        {
            KlassDerived k    = new KlassDerived("me oh my");
            KlassDerived kret = li_boost_shared_ptr.derivedreftest(k);
            String       val  = kret.getValue();
            verifyValue("me oh my derivedreftest-Derived", val);
            verifyCount(2, k); // includes an extra reference for the upcast in the proxy class
            verifyCount(2, kret);
        }

        ////////////////////////////////// Derived and base class mixed ////////////////////////////////////////
        // pass by shared_ptr (mixed)
        {
            Klass  k    = new KlassDerived("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointertest-Derived", val);
            verifyCount(3, k); // an extra reference for the upcast in the proxy class
            verifyCount(3, kret);
        }

        // pass by shared_ptr pointer (mixed)
        {
            Klass  k    = new KlassDerived("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointerpointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointerpointertest-Derived", val);
            verifyCount(3, k); // an extra reference for the upcast in the proxy class
            verifyCount(3, kret);
        }

        // pass by shared_ptr reference (mixed)
        {
            Klass  k    = new KlassDerived("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointerreftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointerreftest-Derived", val);
            verifyCount(3, k); // an extra reference for the upcast in the proxy class
            verifyCount(3, kret);
        }

        // pass by shared_ptr pointer reference (mixed)
        {
            Klass  k    = new KlassDerived("me oh my");
            Klass  kret = li_boost_shared_ptr.smartpointerpointerreftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my smartpointerpointerreftest-Derived", val);
            verifyCount(3, k); // an extra reference for the upcast in the proxy class
            verifyCount(3, kret);
        }

        // pass by value (mixed)
        {
            Klass  k    = new KlassDerived("me oh my");
            Klass  kret = li_boost_shared_ptr.valuetest(k);
            String val  = kret.getValue();
            verifyValue("me oh my valuetest", val); // note slicing
            verifyCount(2, k);                      // an extra reference for the upcast in the proxy class
            verifyCount(1, kret);
        }

        // pass by pointer (mixed)
        {
            Klass  k    = new KlassDerived("me oh my");
            Klass  kret = li_boost_shared_ptr.pointertest(k);
            String val  = kret.getValue();
            verifyValue("me oh my pointertest-Derived", val);
            verifyCount(2, k); // an extra reference for the upcast in the proxy class
            verifyCount(1, kret);
        }

        // pass by ref (mixed)
        {
            Klass  k    = new KlassDerived("me oh my");
            Klass  kret = li_boost_shared_ptr.reftest(k);
            String val  = kret.getValue();
            verifyValue("me oh my reftest-Derived", val);
            verifyCount(2, k); // an extra reference for the upcast in the proxy class
            verifyCount(1, kret);
        }

        // 3rd derived class
        {
            Klass  k   = new Klass3rdDerived("me oh my");
            String val = k.getValue();
            verifyValue("me oh my-3rdDerived", val);
            verifyCount(3, k); // 3 classes in inheritance chain == 3 swigCPtr values
            val = li_boost_shared_ptr.test3rdupcast(k);
            verifyValue("me oh my-3rdDerived", val);
            verifyCount(3, k);
        }

        ////////////////////////////////// Member variables ////////////////////////////////////////
        // smart pointer by value
        {
            MemberVariables m = new MemberVariables();
            Klass           k = new Klass("smart member value");
            m.SmartMemberValue = k;
            String val = k.getValue();
            verifyValue("smart member value", val);
            verifyCount(2, k);

            Klass kmember = m.SmartMemberValue;
            val = kmember.getValue();
            verifyValue("smart member value", val);
            verifyCount(3, kmember);
            verifyCount(3, k);

            m.Dispose();
            verifyCount(2, kmember);
            verifyCount(2, k);
        }
        // smart pointer by pointer
        {
            MemberVariables m = new MemberVariables();
            Klass           k = new Klass("smart member pointer");
            m.SmartMemberPointer = k;
            String val = k.getValue();
            verifyValue("smart member pointer", val);
            verifyCount(1, k);

            Klass kmember = m.SmartMemberPointer;
            val = kmember.getValue();
            verifyValue("smart member pointer", val);
            verifyCount(2, kmember);
            verifyCount(2, k);

            m.Dispose();
            verifyCount(2, kmember);
            verifyCount(2, k);
        }
        // smart pointer by reference
        {
            MemberVariables m = new MemberVariables();
            Klass           k = new Klass("smart member reference");
            m.SmartMemberReference = k;
            String val = k.getValue();
            verifyValue("smart member reference", val);
            verifyCount(2, k);

            Klass kmember = m.SmartMemberReference;
            val = kmember.getValue();
            verifyValue("smart member reference", val);
            verifyCount(3, kmember);
            verifyCount(3, k);

            // The C++ reference refers to SmartMemberValue...
            Klass kmemberVal = m.SmartMemberValue;
            val = kmember.getValue();
            verifyValue("smart member reference", val);
            verifyCount(4, kmemberVal);
            verifyCount(4, kmember);
            verifyCount(4, k);

            m.Dispose();
            verifyCount(3, kmember);
            verifyCount(3, k);
        }
        // plain by value
        {
            MemberVariables m = new MemberVariables();
            Klass           k = new Klass("plain member value");
            m.MemberValue = k;
            String val = k.getValue();
            verifyValue("plain member value", val);
            verifyCount(1, k);

            Klass kmember = m.MemberValue;
            val = kmember.getValue();
            verifyValue("plain member value", val);
            verifyCount(1, kmember);
            verifyCount(1, k);

            m.Dispose();
            verifyCount(1, kmember);
            verifyCount(1, k);
        }
        // plain by pointer
        {
            MemberVariables m = new MemberVariables();
            Klass           k = new Klass("plain member pointer");
            m.MemberPointer = k;
            String val = k.getValue();
            verifyValue("plain member pointer", val);
            verifyCount(1, k);

            Klass kmember = m.MemberPointer;
            val = kmember.getValue();
            verifyValue("plain member pointer", val);
            verifyCount(1, kmember);
            verifyCount(1, k);

            m.Dispose();
            verifyCount(1, kmember);
            verifyCount(1, k);
        }
        // plain by reference
        {
            MemberVariables m = new MemberVariables();
            Klass           k = new Klass("plain member reference");
            m.MemberReference = k;
            String val = k.getValue();
            verifyValue("plain member reference", val);
            verifyCount(1, k);

            Klass kmember = m.MemberReference;
            val = kmember.getValue();
            verifyValue("plain member reference", val);
            verifyCount(1, kmember);
            verifyCount(1, k);

            m.Dispose();
            verifyCount(1, kmember);
            verifyCount(1, k);
        }

        // null member variables
        {
            MemberVariables m = new MemberVariables();

            // shared_ptr by value
            Klass k = m.SmartMemberValue;
            if (k != null)
            {
                throw new ApplicationException("expected null");
            }
            m.SmartMemberValue = null;
            k = m.SmartMemberValue;
            if (k != null)
            {
                throw new ApplicationException("expected null");
            }
            verifyCount(0, k);

            // plain by value
            try { m.MemberValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }

        ////////////////////////////////// Global variables ////////////////////////////////////////
        // smart pointer
        {
            Klass kglobal = li_boost_shared_ptr.GlobalSmartValue;
            if (kglobal != null)
            {
                throw new ApplicationException("expected null");
            }

            Klass k = new Klass("smart global value");
            li_boost_shared_ptr.GlobalSmartValue = k;
            verifyCount(2, k);

            kglobal = li_boost_shared_ptr.GlobalSmartValue;
            String val = kglobal.getValue();
            verifyValue("smart global value", val);
            verifyCount(3, kglobal);
            verifyCount(3, k);
            verifyValue("smart global value", li_boost_shared_ptr.GlobalSmartValue.getValue());
            li_boost_shared_ptr.GlobalSmartValue = null;
        }
        // plain value
        {
            Klass kglobal;

            Klass k = new Klass("global value");
            li_boost_shared_ptr.GlobalValue = k;
            verifyCount(1, k);

            kglobal = li_boost_shared_ptr.GlobalValue;
            String val = kglobal.getValue();
            verifyValue("global value", val);
            verifyCount(1, kglobal);
            verifyCount(1, k);
            verifyValue("global value", li_boost_shared_ptr.GlobalValue.getValue());

            try { li_boost_shared_ptr.GlobalValue = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }
        // plain pointer
        {
            Klass kglobal = li_boost_shared_ptr.GlobalPointer;
            if (kglobal != null)
            {
                throw new ApplicationException("expected null");
            }

            Klass k = new Klass("global pointer");
            li_boost_shared_ptr.GlobalPointer = k;
            verifyCount(1, k);

            kglobal = li_boost_shared_ptr.GlobalPointer;
            String val = kglobal.getValue();
            verifyValue("global pointer", val);
            verifyCount(1, kglobal);
            verifyCount(1, k);
            li_boost_shared_ptr.GlobalPointer = null;
        }
        // plain reference
        {
            Klass kglobal;

            Klass k = new Klass("global reference");
            li_boost_shared_ptr.GlobalReference = k;
            verifyCount(1, k);

            kglobal = li_boost_shared_ptr.GlobalReference;
            String val = kglobal.getValue();
            verifyValue("global reference", val);
            verifyCount(1, kglobal);
            verifyCount(1, k);

            try { li_boost_shared_ptr.GlobalReference = null; throw new ApplicationException("Failed to catch null pointer"); } catch (ArgumentNullException) {}
        }

        ////////////////////////////////// Templates ////////////////////////////////////////
        {
            PairIntDouble pid = new PairIntDouble(10, 20.2);
            if (pid.baseVal1 != 20 || pid.baseVal2 != 40.4)
            {
                throw new ApplicationException("Base values wrong");
            }
            if (pid.val1 != 10 || pid.val2 != 20.2)
            {
                throw new ApplicationException("Derived Values wrong");
            }
        }
    }
Ejemplo n.º 24
0
        private void GenerateSchedule()
        {
            DBobjects.Entities.Clear();
            int maxIdKabinet = DBobjects.Entities.Kabinet.OrderByDescending(p => p.ID_Kabinet).FirstOrDefault().ID_Kabinet + 1;
            int maxIdKlass   = DBobjects.Entities.Klass.OrderByDescending(p => p.ID_Klass).FirstOrDefault().ID_Klass + 1;
            int maxIdUchitel = DBobjects.Entities.Uchitel.OrderByDescending(p => p.ID_Uchitel).FirstOrDefault().ID_Uchitel + 1;

            int[,,] ZanKabinet = new int [maxIdKabinet, 6, 7];
            int[,,] ZanKlass   = new int[maxIdKlass, 6, 7];
            int[,,] ZanUchitel = new int[maxIdUchitel, 6, 7];
            int[,] FreeKabs    = new int[30, 2];
            Klass [] klasses  = DBobjects.Entities.Klass.ToArray();
            Random   RANDMASS = new Random();

            for (int i = klasses.Length - 1; i >= 1; i--)
            {
                int   j    = RANDMASS.Next(i + 1);
                Klass tmpM = klasses[j];
                klasses[j] = klasses[i];
                klasses[i] = tmpM;
            }
            int            Lk       = klasses.Count();
            int            ik       = 0;
            List <Predmet> predmets = new List <Predmet>();

            while ((ik < Lk))
            {
                var tmp = klasses[ik];
                List <KlassPredmet> klassPr = DBobjects.Entities.KlassPredmet.Where(p => p.ID_Klass == tmp.ID_Klass).ToList();
                foreach (KlassPredmet klPr in klassPr)
                {
                    predmets.Add(klPr.Predmet);
                }
                predmets = predmets.Distinct().ToList();//список предметов для класса
                int Lp = predmets.Count();
                for (int ip = 0; ip < Lp; ip++)
                {
                    var tmpP = predmets[ip];
                    if (DBobjects.Entities.UchitelKlassPredmet.Where(p => p.KlassPredmet.ID_Predmet == tmpP.ID_Predmet && p.KlassPredmet.Klass.ID_Klass == tmp.ID_Klass).Count() > 0)
                    {
                        UchitelKlassPredmet klascPrUch = DBobjects.Entities.UchitelKlassPredmet.FirstOrDefault(p => p.KlassPredmet.ID_Predmet == tmpP.ID_Predmet && p.KlassPredmet.Klass.ID_Klass == tmp.ID_Klass);
                        int            uc       = klascPrUch.ID_Uchitel;
                        int            N        = klascPrUch.KlassPredmet.UrokovVNedelyu;
                        List <Kabinet> kabinets = new List <Kabinet>();
                        for (int i = 1; i <= N; i++)
                        {
                            List <KabinetPredmet> kabPredm = DBobjects.Entities.KabinetPredmet.Where(p => p.ID_Predmet == tmpP.ID_Predmet).ToList();
                            foreach (KabinetPredmet kabPr in kabPredm)
                            {
                                kabinets.Add(kabPr.Kabinet);
                            }
                            int Lkab = kabinets.Count();
                            for (int ikab = 0; ikab < Lkab;)
                            {
                                var tmpKab = kabinets[ikab];
                                int fk     = -1;
                                for (int iwd = 1; iwd <= 5; iwd++)
                                {
                                    for (int iur = 1; iur <= 6; iur++)
                                    {
                                        if (ZanKabinet[tmpKab.ID_Kabinet, iwd, iur] == 0 && ZanKlass[tmp.ID_Klass, iwd, iur] == 0 && ZanUchitel[uc, iwd, iur] == 0)
                                        {
                                            fk = fk + 1;
                                            FreeKabs[fk, 0] = iwd;
                                            FreeKabs[fk, 1] = iur;
                                        }
                                    }
                                }
                                if (fk >= 0)
                                {
                                    Random rand  = new Random();
                                    var    rndwu = rand.Next(fk);
                                    var    wd    = FreeKabs[rndwu, 0];
                                    var    ur    = FreeKabs[rndwu, 1];

                                    ZanKabinet[tmpKab.ID_Kabinet, wd, ur] = 1;
                                    ZanKlass[tmp.ID_Klass, wd, ur]        = 1;
                                    ZanUchitel[uc, wd, ur] = 1;
                                    Urok urok = new Urok();
                                    urok.ID_Kabinet  = tmpKab.ID_Kabinet;
                                    urok.ID_Klass    = tmp.ID_Klass;
                                    urok.ID_Predmet  = tmpP.ID_Predmet;
                                    urok.ID_Uchitel  = uc;
                                    urok.Weekday     = wd;
                                    urok.Nomer_uroka = ur;
                                    DBobjects.Entities.Urok.Add(urok);
                                    DBobjects.Entities.SaveChanges();
                                }
                                break;
                            }
                        }
                    }
                }
                ik++;
            }
        }