상속: QueryValue
예제 #1
0
        public static QueryValue CreateFromStringValue (string input, QueryField field)
        {
            if (field == null) {
                QueryValue val = new StringQueryValue ();
                val.LoadString (input);
                return val;
            } else {
                foreach (QueryValue val in field.CreateQueryValues ()) {
                    val.LoadString (input);
                    if (!val.IsEmpty) {
                        return val;
                    }
                }
            }

            return null;
        }
예제 #2
0
파일: QueryTests.cs 프로젝트: tigger/tripod
        public void QueryValueSql ()
        {
            QueryValue qv;

            qv = new DateQueryValue (); qv.ParseUserQuery ("2007-03-9");
            Assert.AreEqual (new DateTime (2007, 3, 9), qv.Value);
            Assert.AreEqual ("2007-03-09", qv.ToUserQuery ());
            Assert.AreEqual ("1173420000", qv.ToSql ());

            qv = new StringQueryValue (); qv.ParseUserQuery ("foo 'bar'");
            Assert.AreEqual ("foo 'bar'", qv.Value);
            Assert.AreEqual ("foo 'bar'", qv.ToUserQuery ());
            Assert.AreEqual ("foo bar", qv.ToSql ());

            qv = new StringQueryValue (); qv.ParseUserQuery ("Foo Baño");
            Assert.AreEqual ("Foo Baño", qv.Value);
            Assert.AreEqual ("Foo Baño", qv.ToUserQuery ());
            Assert.AreEqual ("foo bano", qv.ToSql ());

            qv = new ExactStringQueryValue (); qv.ParseUserQuery ("foo 'bar'");
            Assert.AreEqual ("foo 'bar'", qv.Value);
            Assert.AreEqual ("foo 'bar'", qv.ToUserQuery ());
            Assert.AreEqual ("foo ''bar''", qv.ToSql ());

            qv = new IntegerQueryValue (); qv.ParseUserQuery ("22");
            Assert.AreEqual (22, qv.Value);
            Assert.AreEqual ("22", qv.ToUserQuery ());
            Assert.AreEqual ("22", qv.ToSql ());

            qv = new FileSizeQueryValue (); qv.ParseUserQuery ("2048 KB");
            Assert.AreEqual (2097152, qv.Value);
            Assert.AreEqual ("2.048 KB", qv.ToUserQuery ());
            Assert.AreEqual ("2097152", qv.ToSql ());

            // TODO this will break once an it_IT translation for "days ago" etc is committed
            qv = new RelativeTimeSpanQueryValue (); qv.ParseUserQuery ("2 days ago");
            Assert.AreEqual (-172800, qv.Value);
            Assert.AreEqual ("2 days ago", qv.ToUserQuery ());

            // TODO this will break once an it_IT translation for "minutes" etc is committed
            qv = new TimeSpanQueryValue (); qv.ParseUserQuery ("4 minutes");
            Assert.AreEqual (240, qv.Value);
            Assert.AreEqual ("4 minutes", qv.ToUserQuery ());
            Assert.AreEqual ("240000", qv.ToSql ());
        }
예제 #3
0
        public static QueryValue CreateFromStringValue(string input, QueryField field)
        {
            if (field == null)
            {
                QueryValue val = new StringQueryValue();
                val.LoadString(input);
                return(val);
            }
            else
            {
                foreach (var val in field.CreateQueryValues())
                {
                    val.LoadString(input);
                    if (!val.IsEmpty)
                    {
                        return(val);
                    }
                }
            }

            return(null);
        }
예제 #4
0
파일: QueryTests.cs 프로젝트: tigger/tripod
        [Test] // http://bugzilla.gnome.org/show_bug.cgi?id=570312
        public void EscapeSqliteWildcards3 ()
        {
            QueryValue val = new StringQueryValue ();
            val.ParseUserQuery ("Metallic/\\");

            Assert.AreEqual (
                "(CoreAlbums.TitleLowered LIKE '%metallic%' ESCAPE '\\' AND CoreAlbums.TitleLowered IS NOT NULL)",
                AlbumField.ToSql (StringQueryValue.Contains, val)
            );
        }
예제 #5
0
파일: QueryTests.cs 프로젝트: tigger/tripod
        public void EscapeSingleQuotes ()
        {
            QueryValue val = new StringQueryValue ();
            val.ParseUserQuery ("Kelli O'Hara");

            Assert.AreEqual (
                "(CoreArtists.NameLowered LIKE '%kelli ohara%' ESCAPE '\\' AND CoreArtists.NameLowered IS NOT NULL)",
                ArtistField.ToSql (StringQueryValue.Contains, val)
            );
        }
예제 #6
0
파일: QueryTests.cs 프로젝트: tigger/tripod
        public void CustomFormatParenthesisBugFixed ()
        {
            QueryValue val = new StringQueryValue ();
            val.ParseUserQuery ("mp3");

            Assert.AreEqual (
                "(CoreTracks.MimeType LIKE '%mp3%' ESCAPE '\\' OR CoreTracks.Uri LIKE '%mp3%' ESCAPE '\\')",
                MimeTypeField.ToSql (StringQueryValue.Contains, val)
            );
        }
예제 #7
0
        [Test] // http://bugzilla.gnome.org/show_bug.cgi?id=570312
        public void EscapeSqliteWildcards1 ()
        {
            QueryValue val = new StringQueryValue ();
            val.ParseUserQuery ("100% Techno");

            Assert.AreEqual (
                "(CoreAlbums.TitleLowered IS NOT NULL AND CoreAlbums.TitleLowered LIKE '%100 techno%' ESCAPE '\\')",
                AlbumField.ToSql (StringQueryValue.Contains, val)
            );
        }