diff --git a/Cargo.lock b/Cargo.lock
index 26e45ee..4eff00a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -988,7 +988,7 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "oolatoocs"
-version = "1.2.0"
+version = "1.3.0"
dependencies = [
"clap",
"env_logger",
diff --git a/Cargo.toml b/Cargo.toml
index 9e11d6c..671ca4f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "oolatoocs"
-version = "1.2.0"
+version = "1.3.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
diff --git a/src/lib.rs b/src/lib.rs
index 735f776..bf0a28d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -14,7 +14,7 @@ use mastodon::get_mastodon_timeline_since;
pub use mastodon::register;
mod utils;
-use utils::strip_everything;
+use utils::{generate_multi_tweets, strip_everything};
mod twitter;
#[allow(unused_imports)]
@@ -40,13 +40,29 @@ pub async fn run(config: &Config) {
.unwrap_or_else(|e| panic!("Cannot get instance: {}", e));
for toot in timeline {
- let Ok(tweet_content) = strip_everything(&toot.content, &toot.tags) else {
+ let Ok(mut tweet_content) = strip_everything(&toot.content, &toot.tags) else {
continue; // skip in case we canβt strip something
};
- let mut medias: Vec
", "\n\n").replace("
", "\n"));
@@ -48,6 +92,51 @@ fn strip_html_tags(input: &str) -> String {
mod tests {
use super::*;
+ #[test]
+ fn test_twitter_count() {
+ let content = "tamerelol?! π΅";
+
+ assert_eq!(twitter_count(content), content.chars().count());
+
+ let content = "Shoot out to https://y.ml/ !";
+
+ assert_eq!(twitter_count(content), 38);
+
+ let content = "this is the link https://www.google.com/tamerelol/youpi/tonperemdr/tarace.html if you like! What if I shit a final";
+
+ assert_eq!(twitter_count(content), 76);
+ }
+
+ #[test]
+ fn test_generate_multi_tweets_to_none() {
+ // test Β«β―standardβ―Β» text
+ let tweet_content =
+ "LOLOLOL, je suis bien trop petit pour Γͺtre coupΓ© en deux voyons :troll:".to_string();
+
+ let youpi = generate_multi_tweets(&tweet_content);
+
+ assert_eq!(None, youpi);
+
+ // test with Β«β―complexβ―Β» emoji (2 utf-8 chars)
+ let tweet_content = "π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·π«π·".to_string();
+
+ let youpi = generate_multi_tweets(&tweet_content);
+
+ assert_eq!(None, youpi);
+ }
+
+ #[test]
+ fn test_generate_multi_tweets_to_some() {
+ let tweet_content = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ipsum dolor sit amet consectetur adipiscing elit pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit dolor. Mauris nunc congue nisi vitae. Scelerisque varius morbi enim nunc faucibus a pellentesque sit amet. Morbi leo urna molestie at elementum. Tristique et egestas quis ipsum suspendisse ultrices gravida dictum fusce. Amet porttitor eget dolor morbi.".to_string();
+
+ let youpi = generate_multi_tweets(&tweet_content);
+
+ let first_half = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ipsum dolor sit amet consectetur adipiscing elit pellentesque. Pharetra pharetra massa massa ultricies mi quis hendrerit dolor.".to_string();
+ let second_half = "Mauris nunc congue nisi vitae. Scelerisque varius morbi enim nunc faucibus a pellentesque sit amet. Morbi leo urna molestie at elementum. Tristique et egestas quis ipsum suspendisse ultrices gravida dictum fusce. Amet porttitor eget dolor morbi.".to_string();
+
+ assert_eq!(youpi, Some((first_half, second_half)));
+ }
+
#[test]
fn test_strip_mastodon_tags() {
let tags = vec![