[Test] // http://bugzilla.gnome.org/show_bug.cgi?id=570312
        public void EscapeSqliteWildcards3()
        {
            QueryValue val = new StringQueryValue();

            val.ParseUserQuery("Metallic/\\");

            Assert.AreEqual(
                "(CoreAlbums.TitleLowered IS NOT NULL AND CoreAlbums.TitleLowered LIKE '%metallic%' ESCAPE '\\')",
                AlbumField.ToSql(StringQueryValue.Contains, val)
                );
        }
        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)
                );
        }
        public void EscapeSingleQuotes()
        {
            QueryValue val = new StringQueryValue();

            val.ParseUserQuery("Kelli O'Hara");

            Assert.AreEqual(
                "(CoreArtists.NameLowered IS NOT NULL AND CoreArtists.NameLowered LIKE '%kelli ohara%' ESCAPE '\\')",
                ArtistField.ToSql(StringQueryValue.Contains, val)
                );
        }
예제 #4
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 LIKE '%100 techno%' ESCAPE '\\' AND CoreAlbums.TitleLowered IS NOT NULL)",
                AlbumField.ToSql(StringQueryValue.Contains, val)
                );
        }
        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());
        }